有如下枚举:
enum TurnOnOff{
ON,OFF;
}
调用TurnOnOff.ON.name()与TurnOnOff.ON.toString()输出都是字符串'ON',那枚举里的name()与toString()方法有什么区别呢?尽管两个方法的输出是一样的,但尽量还是使用toString().
我们可以看下ENUM里的源码关于两个方法的描述:
/**
* Returns the name of this enum constant, exactly as declared in its
* enum declaration.
* Most programmers should use the toString method...
*/
public final String name() {
return name;
}
/**
* Returns the name of this enum constant, as contained in the
* declaration. This method may be overridden...
*/
public String toString() {
return name;
}
从源码注释上看,两个方法都是返回'this enum constant,但是name()方法是final而toString()是public,显然final是不可被重写的。针对TurnOnOff这个枚举,我们可以重写下toString()方法:
@Override
public String toString(){
return name().charAt(0) + name().substring(1).toLowerCase();
}
这样就可以自定义枚举值输出的内容了,name()就做不到了。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。