Заставить аннотированный класс содержать аннотированное поле - PullRequest
3 голосов
/ 28 июня 2010

Можно ли заставить (во время компиляции) аннотированный класс иметь аннотированное поле?

У меня есть аннотации:

@Target(value = ElementType.TYPE)
@interface MyClass {}

@Target(value = ElementType.FIELD)
@interface MyField {}

и теперь мне бы хотелось, чтобы компиляция такого класса не удалась:

@MyClass
class Customer {

}

тогда как это должно работать:

@MyClass
class Customer {
   @MyField
   String text;
}

1 Ответ

1 голос
/ 28 июня 2010

Да, с использованием apt (инструмент обработки аннотаций).

Но для таких простых задач это будет излишним.

Вы можете настроить прослушиватель, который запускается при запуске приложения и проверяет это требование.

Наконец, вы можете избежать этого, приняв разумные значения по умолчанию - то есть, если класс аннотирован, тогда рассмотрите также все аннотированные поля со значениями по умолчанию.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...