Java Enum没有将其封装在类中

时间:2010-05-25 19:50:22

标签: java enums

我有一种情况,我需要在多个类中使用下面的Checker枚举:

package Sartre.Connect4;

public enum Checker {
    EMPTY,
    RED,
    YELLOW
}

所以我将Checker放在Checker.java文件中,然后从需要它的类中执行以下操作:

示例:

    public Cell(){

    currentCell = Checker.EMPTY;

}

示例:

    public Cell(Checker checker){

    currentCell = checker;
}

并且代码编译得很好并且运行正常。

所以我的问题是什么?我是Java的新手我只是想知道我使用Checker而不将其封装在一个类中的方式是否是一个合理的实现?

可能是因为Java文档枚举教程页面中提到的The enum declaration defines a class (called an enum type).

2 个答案:

答案 0 :(得分:2)

是的,这很好。

虽然,如果此类仅使用<{1}} ,您可以将其定义为静态内部类:

Checker

通过调用:

构建public class Cell { public Cell(Checker checker) {..} // remainder omitted public static enum Checker { EMPTY, RED, YELLOW }; }
Cell

如果它被其他类使用,那么唯一的解决方案是将它作为一个单独的公共类。

答案 1 :(得分:2)

对我而言,一切看起来都很完美。 Java的enum值是类的对象,具有整个枚举的名称;因为一个类,所以像对待任何其他类一样对待它。你甚至可以为他们添加更多的方法,虽然这不是我最喜欢的方法。

当您在其他源文件中使用枚举的特定值时,另一个有用的技巧是import static该值。这允许你使用它而不必限定它(假设它当然不模糊)。有些人对这种技术不以为然,但我喜欢它,因为它保持了使用的清洁,你的IDE总能告诉你究竟发生了什么。 (我不建议在没有IDE的情况下编写Java来支持你。)