我有以下字段
a(String)
b(String)
c(String)
d(boolean)
e(boolean)
是否可以将它们全部放入Enum中,如下所示?
public enum Fields {
a("A")
b("B")
c("C")
d(true)
e(false)
}
答案 0 :(得分:2)
您可以拥有它们,但您应该定义以String
或boolean
作为参数的构造函数。
public enum Constants {
CONSTANT_STRING1("CONSTANT_VALUE1"),
CONSTANT_STRING2("CONSTANT_VALUE2"),
CONSTANT_STRING3("CONSTANT_VALUE3");
CONSTANT_FLAG1(false);
CONSTANT_FLAG2(true);
private String constants;
private boolean flag;
private Constants(String cons) {
this.constants = cons;
}
private Constants(boolean lFlag) {
this.flag= lFlag;
}
}
答案 1 :(得分:0)
听起来你使用枚举来存储常量,这是不好的做法。
答案 2 :(得分:0)
有可能,但我建议不要这样做。在大多数情况下,您真正想要的是一个通用接口,它由两个(或更多)不同的类实现。
请注意,枚举实现接口是完全合法的,但很少看到两个枚举实现相同的接口,如下例所示:
public interface Fields {
}
public enum StringFields implements Fields {
A("A"),
B("B"),
C("C")
private StringFields(String str) {
this.str = str;
}
private final String str;
}
public enum BooleanFields implements Fields {
D(true),
E(false);
private BooleanFields(boolean val) {
this.val = val;
}
private final boolean val;
}
答案 3 :(得分:-2)
你可以在枚举中有两个不同的构造函数,但这意味着你需要有两个字段(其中一个没有被设置)。我认为这没有多大意义。
public enum Fields {
a("A"), b("B"), c("C"), d(true), e(false);
Fields(String str) {
strval = str;
value = false;
}
Fields(boolean val) {
strval = null;
value = val;
}
private final String strval;
private final boolean value;
}
EDITED ***立即编译。你必须同时初始化两者。