关于java:Enum使用name还是toString方法

有如下枚举:

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()就做不到了。

评论

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

这个站点使用 Akismet 来减少垃圾评论。了解你的评论数据如何被处理