Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Do I need to define an enum as 'public' in its own file so it can be recognized outside its own package?

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; 

}
like image 302
Linc Avatar asked Sep 26 '10 13:09

Linc


2 Answers

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.

like image 99
Starkey Avatar answered Sep 29 '22 21:09

Starkey


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.

like image 23
matt b Avatar answered Sep 29 '22 21:09

matt b