我在ABC.java中定义了公共枚举ABC,然后将其编译为ABC.class。
在另一个XYZ.java中,我使用私有ABC _abc 。
XYZ和ABC在某个包中。
但它告诉找不到符号类ABC 。
有什么问题?
package teacherII;
public enum Semester {
Fall1999, Spring2000, Fall2000,
Spring2001, Fall2001, Spring2002, Fall2002,
Fall2003, Spring2004
}
在另一个文件中,我使用
package teacherII;
public class Questionnaire {
private Semester _semester;
编译命令: javac -d ../classes/ Questionnaire.java
Semester.class位于../class/teacherII/Semester.class。在我编译Questionnaire.java
之前就在那里非常感谢你们的回复。 本赛季就像克里斯和Vineet所说的那样,在编写Questionnair时我没有设置classpath。现在有效。再次谢谢你们!
答案 0 :(得分:3)
看起来你没有正确编译。
你的枚举的定义看起来不错。您收到该错误消息的原因是,当您尝试编译第二个文件时,编译的(.class
)文件不存在(或不可访问)。
所以,例如:
---- A.java ----
package a;
public enum A { one, two, three }
---- B.java ----
package a;
public class B {
A x;
}
使用javac A.java B.java
但它会失败,例如,你首先编译B.java:
javac B.java
B.java:3: cannot find symbol
symbol : class A
location: class a.B
A x;
^
1 error
我认为发生了类似的事情。
所以,基本上在编译时检查你的类路径。
答案 1 :(得分:0)
您可能遇到问题,因为您将枚举标识符命名为与类标识符(ABC)相同,但如果您只是简化示例,则应该没问题。
要使用ABC,您需要引用ABC作为对象的实例,然后您就可以访问枚举器。
例如......
public class ABC {
public enum ABCEnum { ..., ..., ... };
...
}
public class XYZ {
public static void main(String args[]) {
ABC x = new ABC();
System.out.println(x.ABCEnum);
}
}
但是,你也可以制作枚举static
,这样你就不需要这样做了。
public class ABC {
public static enum ABCEnum { ... };
...
}
public class XYZ {
public static void main(String args[]) {
System.out.println(ABC.ABCEnum);
}
}
答案 2 :(得分:0)
您的代码没有问题。
在您的情况下,您会收到此错误,因为您在编译之前实际上正在另一个类中使用Enum。