具有动态方法参数的枚举

时间:2014-09-23 20:57:43

标签: java enums

我在枚举中定义了一些消息,但这些消息包含%s个占位符。例如:

public enum MyEnum {
    SUCCESS ("Processed successfully", Arrays.asList()),
    ERROR ("Error occurred, reason : %s", Arrays.asList("static reason"));

    private String msg;
    private Object[] params;

    private MyEnum(String msg, Object... params) {
        this.msg = msg;
        this.params = params;
    }

    public String getMessage() {
        return String.format(this.msg, this.params); 
    }
}

所以,在这里我可以传递ERROR枚举值的静态原因。我希望客户端传递错误原因并从getMessage()方法获取生成枚举值。

我想通过在params方法中传递getMessage来实现这一点 -

public String getMessage(String... params) {
    return String.format(this.msg, params);
}

有没有比这样做更好的选择?我希望我的枚举能够根据params返回动态生成的消息。

1 个答案:

答案 0 :(得分:1)

你无法做任何事情"动态"使用构造函数:SUCCESSENUM是静态引用,每个引用都会在加载类时初始化为指向新的MyEnum实例。构造函数将被调用一次,然后在程序的生命周期内再也不会被调用。

  

我想通过在getMessage方法中传递params来实现这一目标......有没有比这样做更好的选择?

我无法想到更好的方式。