在Java枚举上实现toString
Java似乎有可能写这样的东西:
private enum TrafficLight { RED, GREEN; public String toString() { return //what should I return here if I want to return //"abc" when red and "def" when green? } }
现在,我想知道是否有可能在枚举的值为红色时返回toString方法“abc”,当它是绿色时返回“def”。 另外,是否有可能做类似于C#,你可以做到这一点?
private enum TrafficLight { RED = 0, GREEN = 15 ... }
我试过这个,但它,但我得到编译器错误。
谢谢
答案1:
enum TrafficLight { RED, GREEN; @Override public String toString() { switch(this) { case RED: return "abc"; case GREEN: return "def"; default: throw new IllegalArgumentException(); } } }
答2:
enum TrafficLight { RED(0), GREEN(15); int value; TrafficLight(int value) { this.value = value; } }
你可以这样做:
private enum TrafficLight { // using the constructor defined below RED("abc"), GREEN("def"); // Member to hold the name private String string; // constructor to set the string TrafficLight(String name){string = name;} // the toString just returns the given name @Override public String toString() { return string; } }
您可以添加尽可能多的方法和成员,只要你喜欢。 我相信你甚至可以添加多个构造函数。 所有的构造函数必须是private
。
Java中的enum
基本上是一个具有一定数量实例的类。
另外,如果您需要获取枚举的小写string值(“红色”,“绿色”)您可以这样做,如下所示:
private enum TrafficLight { RED, GREEN; @Override public String toString() { return super.toString().toLowerCase(); } }