Есть ли способ, с помощью которого я могу иметь Enum в Java, чтобы принимать различное количество аргументов, чтобы достичь этого без использования varargs.
public enum ValueType {
LITERAL() {
@Override
String getRepresentation(String... args) {
return MvelStringUtil.representAsLiteral(args[0]);
}
},
NUMBER() {
@Override
String getRepresentation(String... args) {
return args[0];
}
},
//converts a string representation of a date to a java.util.Date representation, because this is what is required
DATE() {
@Override
// should have two params, 1- date in string, 2- format of the passed string
String getRepresentation(String... args) {
// DateUtil.parse accepts dateInString and dateFormat.
return DateUtil.parse(args[0], args[1]).toString();
}
};
abstract String getRepresentation(String... args);
}
Здесь LITERAL и NUMBER принимают только один аргумент,то есть целевое значение, тогда как экземпляр DATE принимает два.Я прошел несколько вопросов только для того, чтобы выяснить, что этого нельзя достичь с помощью Generics, поскольку перечисления не поддерживают Generics до такой степени.
Кроме того, с точки зрения дизайна, я мог бы просто не иметь все типы в Enum, а иметь их в классе с некоторыми обходными путями, имея в виду, что этот экземпляр ValueType необходимо было разобрать из метода json и getRepresentationбудет вызван для экземпляра unmarshalled enum, чтобы получить фактическое представление целевого значения.