Использование аннотации для сортировщика объектов? - PullRequest
1 голос
/ 20 декабря 2011

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

  1. Чтобы пометить поле как сопоставимое с другим объектом, то же поле.
  2. И дать имя сортировки поля (например, Дата модификации или Имя).

Затем контейнер пройдет список объектов (помните, что они похожи), соберет список RententionSortable, которые содержит объект, и передаст список в графический интерфейс. Графический интерфейс отобразит список и запросит сортируемое выделение и вернет его сортируемому, который затем отсортирует список по выбранному RetentionSortable.

Цель этого метода или сортировки объекта - позволить мне создать небольшой контейнер, который может в общем случае принимать любой объект и сортировать его, если в нем есть хотя бы одно поле RetentionSortable.

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

Использует ли использование отражения аннотаций для нахождения всех полей, аннотированных конкретной аннотацией, эффективную практику сортировки абстрактных объектов?

Ответы [ 2 ]

2 голосов
/ 20 декабря 2011

Для удобства есть аннотации, и ваше использование делает ситуацию более удобной, поэтому она кажется разумной.Альтернативой является ведение отдельного словаря, по которому поля можно сортировать по каким объектам, и это немного более громоздко, но немного лучше с точки зрения разделения проблем.

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

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

2 голосов
/ 20 декабря 2011

Как вы думаете, в принципе, каждая конфигурация на основе аннотаций работает ?«Дайте мне все поля такого-то типа, помеченные @Inject» или «дайте мне все в пакете baz.plugh, аннотированные @Controller».

Хорошо ли это для«абстрактная сортировка» или нет, я не понимаю, почему нет.Если это работает и устраняет необходимость в таких вещах, как bean mappers и bean info class, в чем проблема?

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