Как обеспечить значение перечисления в аннотацию от константы в JavaJAVA

Программисты JAVA общаются здесь
Ответить Пред. темаСлед. тема
Anonymous
 Как обеспечить значение перечисления в аннотацию от константы в Java

Сообщение Anonymous »

Я не могу использовать перечисление, взятое с постоянной в качестве параметра в аннотации. Я получаю эту ошибку компиляции: «Атрибут значения для аннотации [атрибут] должен быть постоянным выражением перечисления». < /P>

Это упрощенная версия кода для перечисления: < /p>

public enum MyEnum {
APPLE, ORANGE
}
< /code>

для аннотации: < /p>

@Retention(RetentionPolicy.RUNTIME)
@Target({ ElementType.METHOD })
public @interface MyAnnotation {
String theString();

int theInt();

MyEnum theEnum();
}
< /code>

и класс: < /p>

public class Sample {
public static final String STRING_CONSTANT = "hello";
public static final int INT_CONSTANT = 1;
public static final MyEnum MYENUM_CONSTANT = MyEnum.APPLE;

@MyAnnotation(theEnum = MyEnum.APPLE, theInt = 1, theString = "hello")
public void methodA() {

}

@MyAnnotation(theEnum = MYENUM_CONSTANT, theInt = INT_CONSTANT, theString = STRING_CONSTANT)
public void methodB() {

}

}
< /code>

Ошибка отображается только в «theenum = myenum_constant». Строка и константы int в порядке с компилятором, константа перечисления не является, даже если это то же значение, что и то же самое, что и то же самое, что и то же самое, что и то же самое, что и то же самое, что и то же самое, что и то же значение. Взгляд на меня, как это, не хватает в компиляторе, потому что все три, очевидно, являются постоянными. Нет никаких вызовов метода, не странного использования классов и т. Д. < /p>

Чего я хочу достичь: < /p>


использовать myenum_constant как в аннотации, так и позже в коде. /> Любой способ достижения этих целей был бы в порядке. < /p>

edit: < /strong> < /p>

Спасибо всем. Как вы говорите, это не может быть сделано. JLS должен быть обновлен. На этот раз я решил забыть об перечислениях в аннотациях и использовать обычные константы Int. Пока INT назначается из именованной постоянной, значения ограничены, и это «виды» типа Safe. < /P>

Похоже: < /p>

public interface MyEnumSimulation {
public static final int APPLE = 0;
public static final int ORANGE = 1;
}
...
public static final int MYENUMSIMUL_CONSTANT = MyEnumSimulation.APPLE;
...
@MyAnnotation(theEnumSimulation = MYENUMSIMUL_CONSTANT, theInt = INT_CONSTANT, theString = STRING_CONSTANT)
public void methodB() {
...
< /code>

И я могу использовать myenumsimul_constant в любом месте в коде. < /p>

Подробнее здесь: https://stackoverflow.com/questions/132 ... nt-in-java
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «JAVA»