在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?
}
}
Run Code Online (Sandbox Code Playgroud)
现在,我想知道当枚举值为红色时是否可以返回toString方法"abc",当它为绿色时返回"def".此外,是否可以在C#中执行此操作,您可以在哪里执行此操作?:
private enum TrafficLight {
RED = 0,
GREEN = 15
...
}
Run Code Online (Sandbox Code Playgroud)
我试过这个但是它但是我遇到了编译器错误.
谢谢
jjn*_*guy 95
你可以这样做:
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;
}
}
Run Code Online (Sandbox Code Playgroud)
您可以根据需要添加任意数量的方法和成员.我相信你甚至可以添加多个构造函数.所有构造函数必须是private.
一个enum在Java中基本上是class有实例的定数.
mis*_*tor 67
enum TrafficLight {
RED,
GREEN;
@Override
public String toString() {
switch(this) {
case RED: return "abc";
case GREEN: return "def";
default: throw new IllegalArgumentException();
}
}
}
Run Code Online (Sandbox Code Playgroud)
enum TrafficLight {
RED(0),
GREEN(15);
int value;
TrafficLight(int value) { this.value = value; }
}
Run Code Online (Sandbox Code Playgroud)
小智 12
此外,如果您需要获取枚举的小写字符串值("红色","绿色"),您可以按如下方式进行:
private enum TrafficLight {
RED,
GREEN;
@Override
public String toString() {
return super.toString().toLowerCase();
}
}
Run Code Online (Sandbox Code Playgroud)
小智 7
我喜欢这种选择性替代 toString() 的方法,如果它对任何人都有用的话:
private enum TrafficLight {
RED,
GREEN {
@Override
public String toString() {
return "GREEN-ISH";
}
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
50112 次 |
| 最近记录: |