IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Java Discussion :

Nom de l'Interface en Java


Sujet :

Java

  1. #1
    Nouveau membre du Club
    Inscrit en
    Avril 2010
    Messages
    59
    Détails du profil
    Informations forums :
    Inscription : Avril 2010
    Messages : 59
    Points : 35
    Points
    35
    Par défaut Nom de l'Interface en Java
    bonjour

    Je veux créer une interface dont le noms est le résultat d'un get qui se trouve dans un autre package ( un autre plugin )

    Est il possible de faire ça ?

    si c'est le cas Merci de me dire comment ?

    Merci d'avance

  2. #2
    Modérateur

    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    12 551
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 551
    Points : 21 607
    Points
    21 607
    Par défaut
    Ben pas trop, non. Ou alors, ça s'utiliserait comment, ton bazar ?
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  3. #3
    Membre chevronné
    Inscrit en
    Mai 2006
    Messages
    1 364
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 1 364
    Points : 1 984
    Points
    1 984
    Par défaut
    Tu peux faire de la compilation à la volée. Mais je vois pas trop l'interet puisque ta classe ne pourra pas l'utiliser. Ou alors, il faudrait aussi créer des classes qui l'utilisent à la volée. Est ce que tu peux mieux expliquer ce que tu cherches à faire ? Il y a peut etre plus simple...

  4. #4
    Membre confirmé Avatar de Satch
    Homme Profil pro
    Hypnothérapeute - Magicien
    Inscrit en
    Mars 2004
    Messages
    498
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : Suisse

    Informations professionnelles :
    Activité : Hypnothérapeute - Magicien

    Informations forums :
    Inscription : Mars 2004
    Messages : 498
    Points : 645
    Points
    645
    Par défaut
    C'est tout à fait possible.

    Un petit exemple avec une classe ci dessous. Pour une interface il suffit de faire la même chose et idem pour les classes qui implémenteront l'interfaces.

    Prérequis : Il faut que tools.jar (présent dans le JDK soit référencé par le projet)

    Le bout de code ci dessous fonctionne, mais on peut très certainement faire mieux.
    Il créé un fichier .java contenant le code dans le dossier source du projet, le compile, puis copie le fichier class dans le dossier du projet contenant les classes.
    Il utilise ensuite le classLoader pour charger la classe et invoquer une méthode dessus.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
     
     
    		//constantes
    		final String NOM_CLASSE = "ClasseTest";
    		final String CHEMIN_SOURCE = "src/";
    		final String CHEMIN_BIN = "bin/";
     
    		//Ecriture du .java
    		String s = "public class " + NOM_CLASSE + "{" + "		public void foo(){"
    				+ "			System.out.println(\"Hello World !\"+this.getClass());"
    				+ "		}" + "}";
    		FileWriter fw = new FileWriter(CHEMIN_SOURCE + NOM_CLASSE + ".java");
    		fw.write(s);
    		fw.flush();
    		fw.close();
     
     
    		//Compilation
    		String[] sources = { CHEMIN_SOURCE + NOM_CLASSE + ".java" };
    		com.sun.tools.javac.Main.compile(sources);
     
     
    		//copie du .class dans un dossier inclu dans le classPath
    		FileChannel in = null;
    		FileChannel out = null;
     
    		try {
    			in = new FileInputStream(CHEMIN_SOURCE + NOM_CLASSE + ".class")
    					.getChannel();
    			out = new FileOutputStream(CHEMIN_BIN + NOM_CLASSE + ".class")
    					.getChannel();
    			in.transferTo(0, in.size(), out);
    		} catch (Exception e) {
    			e.printStackTrace();
    		} finally {
    			if (in != null) {
    				try {
    					in.close();
    				} catch (IOException e) {
    				}
    			}
    			if (out != null) {
    				try {
    					out.close();
    				} catch (IOException e) {
    				}
    			}
    		}
     
     
    		//test du chargement de la classe et appel d'une méthode.
    		Class laClasse = Class.forName(NOM_CLASSE);
    		Object instance;
    		try {
    			instance = laClasse.newInstance();
    			Method foo = laClasse.getDeclaredMethod("foo");
    			foo.invoke(instance);
    		} catch (Exception e) {
    			e.printStackTrace();
    		}
    Je sais que désormais vivre est un calembour,
    La mort est devenue un état permanent,
    Le monde est aux fantômes, aux hyènes et aux vautours.
    Moi je vous dis bravo et vive la mort.

  5. #5
    Nouveau membre du Club
    Inscrit en
    Avril 2010
    Messages
    59
    Détails du profil
    Informations forums :
    Inscription : Avril 2010
    Messages : 59
    Points : 35
    Points
    35
    Par défaut
    bonjour

    Merci pour votre réponse, juste une autre chose
    le nom de l'interface ou la classe ' votre exemple', pour moi est un get dans un autre package, Merci de me dire comment la récupérer ?

    et pour les chemin, dois-je les spécifier ou bien quoi ? j'ai pas bien compris


    Merci

  6. #6
    Membre confirmé Avatar de Satch
    Homme Profil pro
    Hypnothérapeute - Magicien
    Inscrit en
    Mars 2004
    Messages
    498
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : Suisse

    Informations professionnelles :
    Activité : Hypnothérapeute - Magicien

    Informations forums :
    Inscription : Mars 2004
    Messages : 498
    Points : 645
    Points
    645
    Par défaut
    Y a qu'à (j'adore cette expression :p) faire un petit :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    final String NOM_CLASSE = maSuperClasseDansUnPackageObscur.maMéthode();
    Pour les 2 autres constantes, ce sont celles qui, chez moi, définissent les dossiers sources et bin. Ce n'est pas propre, mais c'était juste pour l'exemple.

    Ce qu'il faut juste c'est que :
    - Le compilateur puisse trouver le fichier .java
    - Le fichier .class doit être quelque part dans le classPath de l'application pour pouvoir être chargé.
    Je sais que désormais vivre est un calembour,
    La mort est devenue un état permanent,
    Le monde est aux fantômes, aux hyènes et aux vautours.
    Moi je vous dis bravo et vive la mort.

  7. #7
    Nouveau membre du Club
    Inscrit en
    Avril 2010
    Messages
    59
    Détails du profil
    Informations forums :
    Inscription : Avril 2010
    Messages : 59
    Points : 35
    Points
    35
    Par défaut
    bonjour

    Désolée mais vu que je suis débutante en java je suis un peux perdue

    voilà j'ai un projet qui contient deux package :
    - package instance_tp;
    - package isntance_am;

    voilà le code du premier ils contient deux classe l'importante pour moi c'est celle la :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    package instance_tp;
     
    import java.util.Iterator;
     
    import tp.Templates;
    import tp.Monde;
     
     
     
    public class LoadTest {
     
     
    	public static void main(String[] args) {
     
    		// Loading the existing model
     
    		EMFModelLoad loader = new EMFModelLoad();
    		Templates templates = loader.load();
     
     
     
    		for (Iterator<Monde> iterator1 = templates.getMondes().iterator(); iterator1.hasNext();)
     
    		{
     
    		     Monde  monde = iterator1.next();
     
    		     	String X = monde.getMondeName();
     
    		     System.out.println(" le nom du monde :" +X);
     
     
     
    		}
     
     
     
    	}
    }

    Et je veux récupérer la variable X pour la mettre à la place du get et du set 'comme variable finale et non modifiable dans la classe ci-dessous

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    package t02;
     
    import org.eclipse.emf.ecore.EObject;
     
     
    public interface Monde_Objet extends EObject {
     
     
     
    	String getNameMO();
     
    	void setNameMO(String value);
     
    } // Monde_Objet

  8. #8
    Modérateur

    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    12 551
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 551
    Points : 21 607
    Points
    21 607
    Par défaut
    Remarques :

    #1 - Si tu veux que ça ne soit pas modifiable, tu devrais modifier l'interface pour qu'elle ne propose pas de set().

    #2 - Si tu ne peux pas faire #1 parce que cette interface intervient à certains endroits où il y a besoin de la méthode set(), alors tu devrais utiliser des interfaces distinctes, une qui a set() quand tu as besoin de set(), une qui ne l'a pas quand tu ne veux pas que ça puisse changer.

    #3 - En gros tu ne sais pas ce que c'est qu'une interface. Tu as le droit, seulement avant de venir nous demander des trucs, tu pourrais faire l'effort d'étudier ton cours. Débutant ou pas. Quoi qu'il en soit tu dois d'abord savoir ce que c'est, et après demander comment faire des trucs.

    #4 - Ce que tu veux, en fait, c'est écrire une classe qui implémente ton interface Monde_Objet. Ça ressemblera à ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    public class FixedNameMondeObjet implements MondeObjet {
      private final name;
      public FixedNameMondeObjet(String name) {
        this.name = name;
      }
     
      public String String getNameMO() {
        return name;
      }
     
    }
    Je ne peux pas être plus précis parce que ton architecture est mauvaise comme indiqué en #1 et #2, de plus tu ne nous a pas montré l'interface EObject.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  9. #9
    Nouveau membre du Club
    Inscrit en
    Avril 2010
    Messages
    59
    Détails du profil
    Informations forums :
    Inscription : Avril 2010
    Messages : 59
    Points : 35
    Points
    35
    Par défaut
    bonjour

    Et Merci pour votre réponse


    Nb: je travail sur des plugin EMF-GMF et c'est pas du bazar

    Merci encore une fois

  10. #10
    Modérateur

    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    12 551
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 551
    Points : 21 607
    Points
    21 607
    Par défaut
    Citation Envoyé par Jihane22 Voir le message
    Nb: je travail sur des plugin EMF-GMF et c'est pas du bazar
    Peut-être bien, mais avec la description faite ça en avait pas mal l'air.

    Sinon je manque d'expérience à ce sujet, mais à mon avis c'est bigrement ambitieux de faire un plugin Eclipse quand on vient de découvrir les interfaces.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  11. #11
    Nouveau membre du Club
    Inscrit en
    Avril 2010
    Messages
    59
    Détails du profil
    Informations forums :
    Inscription : Avril 2010
    Messages : 59
    Points : 35
    Points
    35
    Par défaut
    Malheureusement c'est le cas; et je dois trouver une solution.

    Merci encore une fois

Discussions similaires

  1. Interface visual Java
    Par Queb dans le forum Débuter
    Réponses: 4
    Dernier message: 21/11/2007, 21h16
  2. Sicstus / Interface prolog java
    Par superhu dans le forum Langage
    Réponses: 1
    Dernier message: 25/03/2007, 15h58
  3. faire des interfaces en Java
    Par 18Marie dans le forum Langage
    Réponses: 1
    Dernier message: 08/09/2006, 20h39
  4. Composants à utiliser pour une interface graphique Java
    Par nicolas.pied dans le forum Composants
    Réponses: 4
    Dernier message: 28/11/2005, 20h27
  5. Changement de nom dans une interface
    Par memed dans le forum Oracle
    Réponses: 6
    Dernier message: 27/10/2005, 18h20

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo