【发布时间】:2016-11-11 09:42:41
【问题描述】:
我有一个Class,其中包含一组public Strings。而且我想对它们进行分组,以便从另一个 Class 访问它们不会那么混乱。
例如,以下行将打印该字段。
System.out.println(ClassName.GroupName.FIELD);
我的实现方式是:
public class ClassName{
public static class GroupName{
public static final String FIELD = "TEXT";
public static final String FIELD1 = "TEXT";
}
public static class GroupName1{
public static final String FIELD2 = "TEXT";
}
}
但我认为将enums 用于此类任务会更有效。
问题是我必须为每个组写这个:
public enum GroupName{
FIELD ("TEXT"), FIELD1 ("TEXT");
private String text;
Extra(String text) {
this.text = text;
}
public String toString() {
return text;
}
}
所以Class 会变得太大,坦率地说它看起来不会那么整洁。
如果我可以做类似的事情,我会更喜欢它:
public class EnumInterface{
private String text;
public EnumInterface(String text){
this.text = text;
}
public String toString(){
return text;
}
}
public enum GroupName extends EnumInterface{
FIELD("TEXT"), FIELD1("TEXT")
}
但不幸的是,enums 不能扩展 classes,如果 EnumInterface 是实际的 interface,那么我将无法在其中拥有 field、constructor 或 method。
有什么建议吗?
【问题讨论】:
-
“但我认为使用枚举来完成这类任务会更有效。”您设想的效率增益是多少?表示字符串常量的最有效方式是字符串常量。枚举添加了另一层间接可以证明是合理的,但不清楚为什么在这里需要它们。
-
我认为您选择枚举的方式是正确的,但是枚举类不能扩展任何类,因为它们隐式地扩展了 Enum 类。我会说为每个组创建单独的枚举文件,而不是将它们作为内部类,因为这会使代码非常混乱
-
@nick 啊不,我不是在质疑将它们分组的班级——这是个好主意。我在问你为什么认为枚举会比普通的旧类更好。
-
@nickzoum 导航是什么意思?
-
@nickzoum 不要选择效率的解决方案,除非你有证据。总是更喜欢可读性而不是假设更好的性能!