我在java中理解Enum有些困难。
让我说我有一个枚举
public enum EnumTest {
TEST1("Test1"),
TEST2("Test2"),
TEST3("Test3"),
TEST4("Test4");
private final String NAME;
EnumTest (String n) {
NAME=n;
}
public String getName() {
return NAME;
}
}
和客户
public class Client {
public static void main (String [] args){
for (EnumTest vet:EnumTest.values()){
System.out.println(vet);
}
String vett1=EnumTest.TEST1.getName();
EnumTest vett2=EnumTest.TEST2;
System.out.println(vett1);
System.out.println(vett2);
}
}
哪一个有正确的声明?
vett1似乎相当......"丑陋"给我,但有最好的输出格式; vett2看起来更干净,但我不知道为什么我不满意。
是否有良好的宣言习惯?
答案 0 :(得分:2)
写一个新方法toString()以在EnumTest类
上返回Name变量public String toString() {
return NAME;
}
答案 1 :(得分:1)
如果你改变了
public String getName() {
return NAME;
}
到
public String toString() {
return NAME;
}
你将获得vett1的输出但你可以在没有显式调用getName()的情况下使用它。
这是因为java调用toString()将枚举成员转换为可以打印出来的字符串。 但是如果你自己没有定义toString()方法,它会在枚举超级计算器上调用toString。
答案 2 :(得分:1)
这取决于你想要实现的目标。在您的代码示例中,您实现了一个名为getName的方法,该方法从枚举中返回私有变量NAME。这是vett1的价值。打印vett2时打印的值与通过在枚举值上调用toStirng()获得的值相同。在这个示例中,两个值的情况不同,但枚举中的实现方法可以做的不仅仅是返回一个名称。它可以返回任何数据类型。所以这真的取决于你想做什么。