【问题标题】:Do I need to define an enum as 'public' in its own file so it can be recognized outside its own package?我是否需要在自己的文件中将枚举定义为“公共”,以便可以在自己的包之外识别它?
【发布时间】:2011-04-17 10:00:37
【问题描述】:

我有两个包 - x 和 y。

x 包含Student 类和Grade 枚举。

y 包含Klass 类。

为什么在包 y 的 Klass 类中无法识别类型 Student.Grade.C

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

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; 

}

【问题讨论】:

    标签: java enums packages visibility


    【解决方案1】:

    通过不使用publicprotectedprivate,Grade 枚举具有the default access level - 这意味着只有同一包中的其他类可以使用它。

    【讨论】:

      【解决方案2】:

      是的,您必须将该枚举声明为公开。您不必将其放在自己的文件中。

      您将像您的示例一样访问Student.Grade.C

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

      【讨论】:

      • "Yes, you do have to declare that enum public. You shouldn't have to have it in its own file." -> 如果我做到了 public,我会得到错误:"The public type Grade must be defined in its own file".
      • 您是否将枚举定义放在Grade 类中?如果你把它放在外面(比如你的例子),你需要一个单独的文件。如果你想要它在外面,也许你想要一个单独的文件......枚举是否与Grade紧密耦合(似乎是......)?
      猜你喜欢
      • 1970-01-01
      • 2023-03-06
      • 2015-05-08
      • 2022-06-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多