起初,我为我糟糕的英语道歉。
我想使用枚举类型获取带序列号的消息。 示例如下,我怎样才能得到我期望的结果? 还是有好方法? 我想要做的只是添加序列号“start”,如“start 0”,当a1实例调用callEnd我想得到“结束0”
public enum State{
START("start"),
END("end");
public String msg;
private State(String msg){
this.msg = msg;
}
}
public class A{
public void callStart(){
System.out.println(State.START.msg);
}
public void callEnd(){
System.out.println(State.END.msg);
}
public static void main(String[] args){
A a1 = new A();
A a2 = new A();
a1.callStart(); // I wanna get start 0 here
a2.callStart(); // I wanna get start 1 here
a1.callEnd(); // I wanna get end 0 here
a2.callEnd(); // I wanna get end 1 here
}
}
答案 0 :(得分:2)
它是enum
的事实没有区别 - 你只需要一个字段来跟踪数字。
你可以添加一个计数器,虽然@PeterLawrey建议应该避免使枚举值可变,除非这是最简单的解决方案。
public enum State{
START("start"),
END("end");
private int counter = 0;
private String msg;
State(String msg){
this.msg = msg;
}
String getMessage() {
return msg + " " + counter++;
}
}
public static void main(String[] args) {
System.out.println(State.START.getMessage()); // start 0
System.out.println(State.START.getMessage()); // start 1
}