Прочитав статью, я бы сказал, что ответ отрицательный. В статье объясняется, что типичное перечисление таких как:
enum Colours {
RED, BLUE;
}
становится:
final class Colours extends java.lang.Enum {
public final static Colours RED = new Colours("RED", 0);
public final static Colours BLUE = new Colours("BLUE", 1);
private final static values = new Colours[]{ RED, BLUE };
private Colours(String name, int sequence){
super(name, sequence);
}
public static Colours[] values(){
return values;
}
public static Colours valueOf(String name){
return (Colours)java.lang.Enum.valueOf(Colours.class, name);
}
}
где аргументы к Colours
конструктора считаются синтетический (т.е. они были произведены компилятором, чтобы сделать уверенный "материал работает"). Поэтому кажется, что синтетические аргументы неизбежны, поскольку они являются необходимой частью перевода enum в настоящий класс.
Единственная возможность заключается в том, что перечисление не имеет значений - действительно ли Java создает синтетические поля? Интуитивно, ответ - да. Это подтверждается статьей в документе , но почему меня это должно волновать? раздел. Здесь автор показывает, что пустое перечисление по-прежнему имеет число параметров, равное двум, если смотреть с отражением.
Я не могу найти синтетических аргументов в этой статье. Рассмотрите возможность редактирования вопроса с помощью соответствующего примера, чтобы мы знали, о чем ваш вопрос на самом деле. – Pshemo
@Pshemo информация * есть * там, но я согласен, что довольно сложно читать длинную статью, чтобы понять вопрос. Пример кода, представленный в этом вопросе, для меня мало смысла. –