乐趣区

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

退出移动版