1. 程式人生 > >【Java】lombok 列舉 tostring()方法 Bug

【Java】lombok 列舉 tostring()方法 Bug

今天發現一個詭異的問題,一個列舉類使用lombok加上tostring註解以後,列舉tostring方法返回是異常的。

@ToString
public enum WORD {
    A,B,C
}
    public static void main(String args[]) {
        System.out.println(WORD.A.toString());
    }

最終輸出:word()

解決辦法是使用列舉的name()方法。

    public static void main(String args[]) {
        System.out.println(WORD.A.name());
    }

最終輸出:A

關於列舉該使用tostring還是name方法,google上搜到的答案是:name會返回列舉的名字,並且!! name方法是final的。而tostring呢,預設實現就是name方法,但是可以重寫。

上述原因應該是lombok在生成enum的tostring時,做了重寫,沒有使用預設的name()方法。

如果去掉lombok,name列舉的tostring方法就是name行為。