Нужно ли определять enum как public в его собственном файле, чтобы его можно было распознать вне его собственного пакета? - PullRequest
5 голосов
/ 26 сентября 2010

У меня есть два пакета - x и y.

x содержит класс Student и перечисление Grade.

y содержит класс Klass.

Почему тип Student.Grade.C не распознается в классе Klass в пакете y?

Нужно ли определять его в своем собственном файле и делать его общедоступным?

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; 

}

Ответы [ 2 ]

10 голосов
/ 26 сентября 2010

Да, вы должны объявить этот список публичным.Вы не должны иметь его в своем собственном файле.

Вы бы открыли, как и ваш пример Student.Grade.C;

Вы можете import Student.Grade и просто использовать C в своем коде.

4 голосов
/ 26 сентября 2010

Не используя public, protected или private, перечисление Grade имеет уровень доступа по умолчанию - это означает, что его могут использовать только другие классы в том же пакете.

...