Default case in toString for enums
我对 Java 中的枚举有点陌生,我正在尝试重写 toString() 以便它可以返回枚举的特殊情况,并为每种情况创建代码:
1 2 3 4 5 6 7 8 9 10 | enum TestEnum { One, Two, Three, Exclamation, Ampersand, Asterisk; public String toString() { if (this == Ampersand) return"&"; if (this == Exclamation) return"!"; if (this == Asterisk) return"*"; return null; // return toString(); ??? } |
如果我使用 toString 作为默认返回语句,我显然会得到一个 StackOverflowError。有没有办法解决这个问题并返回未包含在 toString() 中的任何情况?
Is there a way to get around this and return any cases not included in the toString()?
我想你只是想要:
1 | return super.toString(); |
然后它不会调用自己 - 它只会使用超类实现。
但是,我会更改实现以使字符串表示成为枚举值中的字段,在必要时在构造时指定:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
测试:
1 2 3 4 5 6 7 |
输出:
1 2 3 4 5 6 | One Two Three ! & * |