Подтвердить что ты не робот

Почему аннотации java?

Я хочу спросить, почему аннотации java используются так много... Я знаю, что они заменили xml-конфигурацию, например, на jpa, но почему такая конфигурация используется вообще? Рассмотрим этот фрагмент кода:

@Entity 
class Ent{
   // some fields
}
//... somewhere in the other file far far away
class NonEnt{
   // whatever here
}
Теперь, когда я пытаюсь поместить это в постоянный контекст, с помощью метода EntityManager persist, я получаю ошибку времени выполнения (лучше было бы получить ошибку компиляции), пытаясь сохранить экземпляр NonEnt. Для меня есть очевидное решение, заставить сущности внедрить некоторый интерфейс no-method вместо использования @Annotations. Но это не популярно среди дизайнеров фреймворков, каков недостаток этого решения?
Спасибо, что ответили...
4b9b3361

Ответ 1

По сравнению с интерфейсами маркеров, аннотации имеют некоторые преимущества:

  • они могут быть параметризированы
  • они более мелкозернистые - вы можете присоединить их не только к классам, но и к другим элементам класса (поля, методы, аргументы метода и т.д.)

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

См. также:

Ответ 2

Использование аннотаций гораздо менее инвазивно, чем принудительное выполнение клиентом интерфейса или расширение класса.

Ответ 3

Для меня есть очевидное решение,

То, что вы описываете, называется "интерфейсом маркера", и это злоупотребление концепцией интерфейса. Я подозреваю, что единственная причина, по которой вы считаете это очевидной, - это из-за Serializable - которая существует только потому, что в то время не было аннотаций.

заставить объекты реализовать некоторые no-method вместо использования @Annotations. Но это не популярно среди разработчиков структуры, что такое недостаток этого решения?

В чем его преимущества? У аннотаций есть огромное преимущество, что они могут иметь параметры, и они намного более мелкозернистые. Маркерные интерфейсы работают только на уровне класса.

Ответ 4

Сводка учебника java:

Аннотации содержат данные о программы, которая не является частью самой программы. У них нет прямых влияние на работу кода они комментируют.

Аннотации имеют ряд применений, среди них:

  • Информация для компилятора. Аннотации могут использоваться компилятор для обнаружения ошибок или подавления предупреждения.
  • Обработка времени компилятора и времени развертывания - Программные средства могут обрабатывать аннотацию генерировать код, файлы XML и т.д. д.
  • Обработка времени выполнения. Некоторые аннотации доступны для проверяется во время выполнения.

Как вы можете видеть, аннотации - это способ указания метаданных о ваших типах в java, включая интерфейсы, они никоим образом не заменяют их.

Ответ 5

Аннотации Java действительно полезны, когда вы хотите добавить дополнительную информацию в свою переменную класса, метода или экземпляра. Существует много библиотек, которые используют эти аннотации. Эти аннотации сохраняют код простым и читаемым с возможностью внесения изменений в код во время выполнения.

Например, если вы использовали библиотеку lombok, которая создает компиляцию, getter и конструктор во время компиляции и сохраняет строки кода и время.

Когда компилятор выполняет код, lomok ищет все поля, помеченные аннотацией @Setter или @Getter, и добавляет setter и getter для этого поля в классе.

Еще один пример - тестировщик Junit. Как junit отличает обычный метод хелпера в тестовом классе и тест. Чтобы разграничить их, используется аннотация @Test.

В этом руководстве объясняется, как вы можете использовать аннотации java для создания собственного тестового бегуна.