我在枚举中定义了一些消息,但这些消息包含%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
返回动态生成的消息。
答案 0 :(得分:1)
你无法做任何事情"动态"使用构造函数:SUCCESS
和ENUM
是静态引用,每个引用都会在加载类时初始化为指向新的MyEnum实例。构造函数将被调用一次,然后在程序的生命周期内再也不会被调用。
我想通过在getMessage方法中传递params来实现这一目标......有没有比这样做更好的选择?
我无法想到更好的方式。