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

Java:如何计算枚举类型中的序列号?,java,Java,首先,我为我的英语不好道歉 我想使用枚举类型获取序列号为的消息。 示例如下,如何获得预期结果?? 还是有好办法?? 我想做的只是将序列号添加到“start”中,比如“start 0”,当a1实例调用callEnd时,我想得到“end 0” 事实上,它是一个enum并没有什么区别——您只需要一个字段来跟踪数字 您可以添加一个计数器,尽管@PeterLawrey建议您应该避免使枚举值可变,除非这是最简单的解决方案 public enum State{ START("start"),

首先,我为我的英语不好道歉

我想使用枚举类型获取序列号为的消息。 示例如下,如何获得预期结果?? 还是有好办法?? 我想做的只是将序列号添加到“start”中,比如“start 0”,当a1实例调用callEnd时,我想得到“end 0”


事实上,它是一个
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
}

对不起,不知道你在说什么。你能再解释一下吗?
msg
private
。您要么创建一个getter方法,要么将其公开(无论哪种方式,我也会将其设置为final,因此无法修改)。我注意到
msg
几乎与枚举的值相同。为什么不用呢?@PeterLawrey你赢了30秒。最近我失去了很多,我把我的答案和你的答案结合起来了非常感谢。非常慷慨。:)如何获取与开始0相对应的结束0。
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
}