我是否需要在其自己的文件中将枚举定义为"公共",以便可以在其自己的包之外识别它?

Lin*_*inc 5 java enums visibility packages

我有两个包 - x和y.

x包含Student类和Grade枚举.

y包含Klass该类.

为什么包y Student.Grade.C中的Klass类中没有识别出类型?

我是否需要在自己的文件中定义它并将其公开?

package x;

enum Grade { A, B, C, D, F, INCOMPLETE };

public class Student {

// blah, blah, member variables, getters, setters, constructors    

}


package y;

public class Klass {

 // This enum type is not recognized in this package
 public static final MINIMUM_GRADE = Student.Grade.C; 

}
Run Code Online (Sandbox Code Playgroud)

Sta*_*key 10

是的,您必须声明枚举公开.你不应该把它放在自己的文件中.

你可以访问就像你的例子Student.Grade.C;

您可以在代码中import Student.Grade使用C它.


mat*_*t b 5

通过不使用public,protectedprivate,Grade 枚举具有默认访问级别- 这意味着只有同一包中的其他类可以使用它。