Вы используете аннотации Java? [дубликат]

15
задан Community 23 May 2017 в 12:33
поделиться

9 ответов

Возможно, наиболее полезным и используемым случаем аннотаций Java является использование аннотаций POJO + вместо файлов конфигурации xml.

Я использую их много, поскольку (как вы уже сказали), если вы используете веб-фреймворк (например, пружину или шов ) у них обычно есть множество аннотаций, которые могут вам помочь.

Недавно я написал несколько аннотаций для создания настраиваемой машины состояний, цели валидации и аннотаций аннотаций (используя его аспект метаданных). И ИМО, они очень помогают сделать код более чистым, простым для понимания и управления.

6
ответ дан 1 December 2019 в 04:47
поделиться

Текущий проект (200KLOC), аннотации, которые я использую все время:

@NotNull / @Nullabe
@Override
@Test
@Ignore
@ThreadSafe
@Immutable

Но я еще не написал свою собственную аннотацию ... Пока!

3
ответ дан 1 December 2019 в 04:47
поделиться

У нас есть конструктор отчетов как часть нашего веб-приложения. Пользователь может добавить большое количество виджетов, которые представляют собой небольшие вариации одного и того же набора тем (графики, таблицы и т. Д.).

Пользовательский интерфейс строится на основе пользовательских аннотаций в классах виджетов. (например, аннотация может содержать значение по умолчанию и допустимые значения, которые будут отображаться в виде раскрывающегося списка. Или флаг, указывающий, является ли поле обязательным).

Оказалось, что это хороший способ позволить разработчикам создавать виджеты, не касаясь пользовательского интерфейса.

0
ответ дан 1 December 2019 в 04:47
поделиться

Мы просто использовали аннотации, чтобы создать простой способ проверки наших POJO:

@NotEmpty
@Pattern(regex = "I")
private String value;

Затем мы запускаем это через валидатор Hibernate , который будет выполнять всю нашу проверку за нас:

import org.hibernate.validator.ClassValidator;
import org.hibernate.validator.InvalidValue;

public void validate(T validateMe) {
    ClassValidator<T> validator = new ClassValidator<T>((Class<T>) validateMe.getClass());
    InvalidValue[] errors = validator.getInvalidValues(validateMe);
}

Отлично работает. Хороший чистый код.

0
ответ дан 1 December 2019 в 04:47
поделиться

Аннотации предназначены только для фреймворков, и они отлично работают в hibernate / jpa. пока вы не напишете фреймворк, которому нужна дополнительная информация из переданных ему объектов, вы не будете писать свои собственные аннотации.

однако есть новая интересная функция junit, которая позволяет вам писать свои собственные аннотации в тестах - http://blog.mycila.com/2009/11/writing-your-own-junit-extensions-using. html

1
ответ дан 1 December 2019 в 04:47
поделиться

Я использую аннотации ежедневно, и они прекрасны. Я использую их с jsf и jpa и считаю, что с ними намного проще управлять и работать, чем с альтернативными конфигурациями XML.

0
ответ дан 1 December 2019 в 04:47
поделиться

Я использую аннотации для описания в моей системе синхронизации состояний, какие классы являются специализациями аннотированных классов, и в какой среде они должны использоваться (когда объект создается, он определяет для своих списков сущностей, какие классы сущностей лучше всего создавать для узлов сети; т.е. сущность Player для серверного узла вместо этого будет сущностью ServerPlayer). Кроме того, описываются атрибуты внутри классов и то, как они должны быть синхронизированы между машинами.

0
ответ дан 1 December 2019 в 04:47
поделиться

Мы используем пользовательские аннотации как часть нашей системы тестирования интеграции:

@Artifact: связывает тест интеграции с идентификатором проблемы. Затем для наших отделов тестирования и контроля автоматически создаются матрицы трассировки.

@Exclude: игнорирует интеграционный тест на основе платформы / версии браузера. Не дает ошибкам IE 6 засорять наши ночные прогоны тестов :)

@SeleniumSession: Определяет настройки селена для каждого теста интеграции.

Это очень мощный инструмент, но пользоваться им нужно осторожно. Просто взгляните на эти ранние файлы классов .NET Enterprise, чтобы увидеть, какими кошмарными могут быть обязательные аннотации:)

0
ответ дан 1 December 2019 в 04:47
поделиться

Я использовал аннотации для:

  • Hibernate, чтобы не хранить эти огромные XML файлы;
  • XML Serialization, чтобы описать, как объект должен быть отображен в самом объекте;
  • Warning removal для предупреждений, которые я не хочу отключать (и для которых конкретный случай не может быть правильно решен).

Я создал аннотации для:

  • Описания состояния, необходимого для выполнения моего метода (например, что пользователь должен войти в систему);
  • Пометки моего метода как исполняемого с определенной платформы с дополнительными свойствами для этой платформы;
  • И, возможно, некоторых других подобных операций.

Аннотации, которые я создал, считываются с помощью Reflection, когда мне нужно получить больше информации об объекте, с которым я работаю. Это работает, и работает отлично.

2
ответ дан 1 December 2019 в 04:47
поделиться
Другие вопросы по тегам:

Похожие вопросы: