使用修饰符在枚举中声明 EnumSetstatic
和final
? 或者是多余的?
例子:
public enum Guitar {
STRATOCASTER,
LES_PAUL,
CLASSIC;
private static final EnumSet electrics = EnumSet.of(STRATOCASTER, LES_PAUL);
}
谢谢!
使用修饰符在枚举中声明 EnumSetstatic
和final
? 或者是多余的?
例子:
public enum Guitar {
STRATOCASTER,
LES_PAUL,
CLASSIC;
private static final EnumSet electrics = EnumSet.of(STRATOCASTER, LES_PAUL);
}
谢谢!
使用修饰符 static 和 final 在枚举中声明 EnumSet 是否有意义?或者是多余的?
不,它们不是多余的。考虑以下示例,其中nonElectrics
可以设置,因为它不是final
.
import java.util.EnumSet;
enum Guitar {
STRATOCASTER, LES_PAUL, CLASSIC;
private static final EnumSet<Guitar> electrics = EnumSet.of(STRATOCASTER, LES_PAUL);
static EnumSet<Guitar> nonElectrics = EnumSet.of(CLASSIC);
public static EnumSet<Guitar> getNonElectrics() {
return nonElectrics;
}
public static void setNonElectrics(EnumSet<Guitar> nonElectrics) {
Guitar.nonElectrics = nonElectrics;
}
public static EnumSet<Guitar> getElectrics() {
return electrics;
}
public boolean isElectronics() {
return electrics.contains(this);
}
}
public class Main {
public static void main(String[] args) {
System.out.println(Guitar.STRATOCASTER.isElectronics());
System.out.println(Guitar.CLASSIC.isElectronics());
EnumSet<Guitar> electrics = EnumSet.of(Guitar.STRATOCASTER, Guitar.LES_PAUL);
Guitar.setNonElectrics(electrics);
System.out.println(Guitar.getNonElectrics());
}
}
这不是多余的,枚举类中的字段不是静态的或最终的。但是,您不能从其他类调用非静态枚举的字段。