我有一种情况,我需要在多个类中使用下面的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).。
答案 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来支持你。)