Java中枚举的最佳使用

Java中枚举的最佳使用,java,enums,Java,Enums,我在理解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() {

我在理解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);
    }
}
哪一个有正确的声明

看起来很。。。“丑陋”对我来说,但有最好的输出格式; vett2看起来更干净,但我不知道为什么我不满意

有申报的好习惯吗?

如果你改变了

public String getName() {
    return NAME;
}

您将获得vett1的输出,但无需显式调用getName()

这是因为java调用toString()将枚举成员转换为可以打印出来的字符串。
但是,如果您不自己定义toString()方法,它将在enums Supercals上调用toString。

这取决于您试图实现的目标。在代码示例中,实现了一个名为getName的方法,该方法从枚举返回私有变量名。这是vett1的值。在上打印vett2时打印的值与通过调用枚举值上的toStirng()获得的值相同。在本例中,这两个值的情况不同,但是在枚举中实现方法可以做的远不止返回一个名称。它可以返回任何数据类型。因此,这实际上取决于您想做什么。

编写一个新方法toString()以在EnumTest类上返回Name变量

public String toString() {
    return NAME;
}

你到底想要实现什么?为什么您对vett2不满意?您可能想了解什么是枚举以及如何使用枚举。您要问的是枚举如何表示为字符串,在这种情况下,两个选项都可以,这取决于您需要什么。vett1是名称,vett2是枚举实例本身。您所称的“声明”实际上只是枚举的表示。这里没有最好的。你可以选择最适合你需要的。你不应该使用所有大写的字段名。它不是一个真正的常数;因此,“名字”更合适。
public String toString() {
    return NAME;
}