0 votes

Qu'est-ce qui ne va pas dans la définition de l'enum de Java ?

J'ai défini l'enum public ABC dans ABC.java, puis je l'ai compilé dans ABC.class.

Dans un autre XYZ.java, j'utilise private ABC _abc .

XYZ et ABC sont dans un certain paquet.

Mais il dit ne trouve pas le symbole classe ABC .

Qu'est-ce qui ne va pas ?

package teacherII;

public enum Semester {

        Fall1999, Spring2000, Fall2000,
        Spring2001, Fall2001, Spring2002, Fall2002,
        Fall2003, Spring2004 
}

Dans l'autre fichier, j'utilise

package teacherII;

public class Questionnaire {  
    private Semester _semester;

Commande de compilation : javac -d ../classes/ Questionnaire.java

Le Semester.class est à ../class/teacherII/Semester.class. Elle était là AVANT que je compile Questionnaire.java


Merci beaucoup pour votre réponse. La saison est que, comme Chris et Vineet l'ont dit, je n'ai pas défini le classpath lors de la compilation de Questionnair. Cela fonctionne maintenant. Merci encore à vous !

3voto

OscarRyz Points 82553

Il semble que vous ne compiliez pas correctement.

La définition de votre enum semble correcte. La raison pour laquelle vous obtenez ce message d'erreur est que le fichier compilé ( .class ) n'est pas présent ( ou accessible ) lorsque vous essayez de compiler le second fichier.

Donc, par exemple :

---- A.java ----
package a;
public enum A { one, two, three }
---- B.java ----
package a;
public class B {
   A x;
}

Compilera très bien avec : javac A.java B.java

Mais il échouera, si par exemple, vous compilez d'abord B.java :

javac B.java  
B.java:3: cannot find symbol
symbol  : class A
location: class a.B
   A x;
   ^
1 error

Je pense que quelque chose de similaire vous arrive.

Donc, en gros, vérifiez votre classpath lors de la compilation.

0voto

danyim Points 818

Vous pouvez rencontrer des problèmes parce que vous avez nommé votre identifiant d'enum de la même manière que votre identifiant de classe (ABC), mais si vous simplifiez juste pour un exemple, alors cela devrait aller.

Pour utiliser ABC, vous devez le référencer en tant qu'instance d'un objet et vous pourrez alors accéder à l'énumérateur.

Par exemple...

public class ABC {
    public enum ABCEnum { ..., ..., ... };

...

}

public class XYZ {
    public static void main(String args[]) {
        ABC x = new ABC();
        System.out.println(x.ABCEnum);
    }
}

Cependant, vous pouvez également faire en sorte que l'enum static pour que vous n'ayez pas besoin de faire ça

public class ABC {
    public static enum ABCEnum { ... };

...

}

public class XYZ {
    public static void main(String args[]) {
        System.out.println(ABC.ABCEnum);
    }
}

0voto

YoK Points 8221

Il n'y a aucun problème avec votre code.

Dans votre cas, vous obtenez cette erreur parce que vous utilisez Enum dans une autre classe avant de la compiler.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X