我有一个看起来像的枚举:
public enum Constants{
YES("y"), NO("N")
private String value;
Constants(String value){
this.value = value;
}
}
Run Code Online (Sandbox Code Playgroud)
我有一个看起来像的测试类
public class TestConstants{
public static void main(String[] args){
System.out.println(Constants.YES.toString())
System.out.println(Constants.NO.toString())
}
}
Run Code Online (Sandbox Code Playgroud)
输出是:
YES
NO
Run Code Online (Sandbox Code Playgroud)
代替
Y
N
Run Code Online (Sandbox Code Playgroud)
我不确定这里有什么问题?
Moh*_*uag 19
您需要覆盖toString枚举的方法:
public enum Constants{
YES("y"), NO("N")
// No changes
@Override
public String toString() {
return value;
}
}
Run Code Online (Sandbox Code Playgroud)
Dav*_*Yee 10
您还可以向枚举添加一个 getter 并简单地调用它来访问实例变量:
public enum Constants{
YES("Y"), NO("N");
private String value;
public String getResponse() {
return value;
}
Constants(String value){
this.value = value;
}
}
public class TestConstants{
public static void main(String[] args){
System.out.println(Constants.YES.getResponse());
System.out.println(Constants.NO.getResponse());
}
}
Run Code Online (Sandbox Code Playgroud)
编写Getter和Setter value并使用:
System.out.println(Constants.YES.getValue());
System.out.println(Constants.NO.getValue());
Run Code Online (Sandbox Code Playgroud)
小智 5
在枚举中创建一个 getValue() 方法,并使用它代替 toString()。
public enum Constants{
YES("y"), NO("N")
private String value;
Constants(String value){
this.value = value;
}
}
public String getValue(){
return value;
}
Run Code Online (Sandbox Code Playgroud)
而不是:
System.out.println(Constants.YES.toString())
System.out.println(Constants.NO.toString())
Run Code Online (Sandbox Code Playgroud)
(也缺少分号),使用
System.out.println(Constants.YES.getValue());
System.out.println(Constants.NO.getValue());
Run Code Online (Sandbox Code Playgroud)
希望这解决了您的问题。如果不想在枚举中创建方法,可以将值字段设为公开,但这会破坏封装。