Java:如何计算枚举类型中的序列号?

时间:2016-03-25 14:51:03

标签: java

起初,我为我糟糕的英语道歉。

我想使用枚举类型获取带序列号的消息。 示例如下,我怎样才能得到我期望的结果? 还是有好方法? 我想要做的只是添加序列号“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
   }
}

1 个答案:

答案 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
}