Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Java: Общие вопросы > Словесные описания к полям при помощи Annotations?


Автор: Dims 9.6.2008, 22:13
Я хочу сделать, чтобы объекты определённого класса отображались иерархически, при помощи Reflection API. В этих классах у меня будут храниться настройки и я хочу, чтобы программу не приходилось переписывать при изменении этих классов.

То есть, программа должна просматриваться все поля класса, выводить их имена и, если типы простые, то и значения. Если типы сложные, то она должна рекурсивно входить в такое поле и делать с ним то же самое. 

Но имена в Java пишутся обычно на английском. Когда я заметил, что в Class есть метод getAnnotation, то я подумал, что можно было в добавлять к полям аннотации на русском языке и они бы служили для пользователя описанием полей.

Но я незнаком с аннотациями. Как мне проще всего реализовать свою идею?

Я бы хотел, перед каждое поле обставлять как-то вроде этого:

@Description("Масштаб шкалы")
double scale;

Можно так сделать?

Автор: powerOn 9.6.2008, 22:45
Цитата(Dims @  9.6.2008,  23:13 Найти цитируемый пост)
Можно так сделать? 

Можно, познакомься с аннотациями и в путь. Благо документации навалом. Например вот эта: http://www.oracle.com/technology/pub/articles/hunter_meta.html http://www.oracle.com/technology/pub/articles/hunter_meta_2.html

Автор: Dims 10.6.2008, 11:51
Не могу понять, в какой файл класть описание типа аннотации и всегда ли оно необходимо?

Автор: LSD 10.6.2008, 12:44
Аннотации объявляются так же как и классы в Java, публичные - в отдельном файле с именем совпадающим с именем аннотации.

Автор: ivg 10.6.2008, 13:26
Я бы использовал JavaBeans идеологию, т. е. свойства, геттеры и сеттеры и т. д. Ну и интернационализация наверно нужна? В этом случае можно обойтись и без аннотаций.

Автор: Dims 10.6.2008, 14:21
Цитата(LSD @ 10.6.2008,  12:44)
Аннотации объявляются так же как и классы в Java, публичные - в отдельном файле с именем совпадающим с именем аннотации.

А не определять тип для аннотации можно? Нет ли какого-то готового типа, в котором я бы мог хранить просто текст для описания?

Автор: LSD 11.6.2008, 18:41
Цитата(Dims @  10.6.2008,  15:21 Найти цитируемый пост)
А не определять тип для аннотации можно? Нет ли какого-то готового типа, в котором я бы мог хранить просто текст для описания? 

Дарю, можешь спокойно использовать:
Код

import java.lang.annotation.*;

@Retention(value = RetentionPolicy.RUNTIME)
public @interface Documentation
{
  String shortDescription();

  String fullDescription();
}

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)