java - 如何在其toString()函数的覆盖内修改枚举的字符串表示形式?

Dau*_*aud 0 java enums overriding

我有以下枚举:

public enum Rank{
   FIRST,
   SECOND
}
Run Code Online (Sandbox Code Playgroud)

每当toString()在枚举上调用一个函数(或在字符串文字中使用它)时,我都希望返回FIRST_RANK(而不是字符串' FIRST ',默认情况下).如果我重写toString()函数,如:

@Override
public String toString(){
  return this.toString() + "_RANK";
}
Run Code Online (Sandbox Code Playgroud)

但这显然会导致递归.问题是我需要使用toString()枚举的默认实现,并且没有toString()我可以调用的超类枚举.

Bru*_*eis 5

只要您想要该枚举实例的名称,就应该使用该name()方法.在你的例子中:

@Override public String toString() {
  return this.name() + "_RANK";
}
Run Code Online (Sandbox Code Playgroud)