问题
I have two packages - x and y.
x contains the Student
class and the Grade
enum.
y contains the Klass
class.
Why is the type Student.Grade.C
not recognized in the Klass
class in package y?
Do I need to define it in its own file and make it public?
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;
}
回答1:
Yes, you do have to declare that enum public. You shouldn't have to have it in its own file.
You would access just like your example Student.Grade.C
;
You could import Student.Grade
and just use C
in your code.
回答2:
By not using public
, protected
or private
, the Grade enum has the default access level - meaning only other classes in the same package can use it.
来源:https://stackoverflow.com/questions/3798045/do-i-need-to-define-an-enum-as-public-in-its-own-file-so-it-can-be-recognized