【Java】lombok 列舉 tostring()方法 Bug
阿新 • • 發佈:2018-12-17
今天發現一個詭異的問題,一個列舉類使用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行為。