我创建了一个枚举,我试图让我的枚举支持一个 String.format 操作,该操作获得无限数量的参数并返回一个字符串。我只设法返回一个对象,在使用此方法后,我必须进行toString()
/casting。我猜有一种更“干净”的方法可以做到这一点,或者可能会更好地覆盖该toString()
方法。基本上,我想支持该toString()
方法,但遗憾的是没能做到,所以我创建了这个方法。如您所见,它被命名text(..)
而不是toString()
.
我怎样才能做得更好?我想要的理想解决方案是toString(..)
返回一个字符串。
public enum MY_ENUM {
VALUE_A("aaa %s"), VALUE_B("bbb %s");
private String text;
MY_ENUM(String text) {
this.text = text;
}
public String text() {
return this.text;
}
public Object text(final Object... o) {
return new Object() {
@Override
public String toString() {
return String.format(text(), o);
}
};
}
}