0 / 0 / 0
Регистрация: 05.10.2017
Сообщений: 13

Конфигурирование и аннотации

25.10.2017, 23:28. Показов 1019. Ответов 11
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Всем привет. Может кто поможет.
Сразу скажу, что нельзя юзать никаких библиотек и т.п.
Постараюсь максимально просто изложить проблему. Есть файл конфигурации config.properties. В файле лежат настройки различные. Раньше я просто читал файл и через Properties работал с ними.

Теперь мне нужно сконфигурировать некий класс с помощью аннотаций.
Для примера вот класс
Java
1
2
3
4
5
public class Animal{
@AnnotationFirst(12)
private int age;
private type Dog;
}
Как видно, у поля age есть аннотация с одним значением.
У меня есть отдельный класс Configurator, который получает объект, берет его все поля, проверяет есть ли аннотации, и, если есть, то назначает полям значения из аннотаций и возвращает объект.

С этим ронятно, но что делать если у поля type класса Animal тоже есть поля с аннотациями?
Java
1
2
3
4
public class Dog{
@AnnotationSecond("Dog")
private name
}
Как сделать, чтобы при конфигурации Animal сконфигурировались и поля у Dog?
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
25.10.2017, 23:28
Ответы с готовыми решениями:

Аннотации JPA
Здравствуйте, всем! Ребята подскажите пожалуйста как правильно аннотировать. есть таблица скажем T1, в нем есть поля (id, name) так...

Spring и аннотации @Configuration & @Autowired
Здравствуйте! Не могу найти ответ на свой вопрос, подскажите возможно ли такое. При работе с веб проектом всю конфигурацию бинов...

JPA аннотации и версия библиотеки для клиента
Интересует вопрос как правильно поступают в такого рода приложениях. Предварительные условия: допустим есть некая сущность Book,...

11
Эксперт Java
3639 / 2971 / 918
Регистрация: 05.07.2013
Сообщений: 14,220
25.10.2017, 23:55
Так же?
0
0 / 0 / 0
Регистрация: 05.10.2017
Сообщений: 13
26.10.2017, 10:18  [ТС]
Я должен закидывать в конфигуратор класс Animal и также должны конфигурироваться поля экземпляра класса Dog в поле анимала.

Возможно поле с Dog тоже помечается аннотацией типа так.
Java
1
2
3
4
5
6
public class Animal{
@AnnotationFirst(12)
private int age;
@Configure
private type Dog;
}

Получается типа иерархическое конфигурирование

Добавлено через 9 часов 50 минут
Еще актуально


Нужно чтобы конфигуратор проверял все поля класса на предмет аннотации @AnnotationFirst и в соот. с ней менял соответствующее поле. НО если у поля есть аннотация @Configure, то нужно взять значение этого поля(хз как), а это будет объект. И уже этот объект проверить опять на наличие аннотаций. Если уже у этого объекта есть поля с аннотацией @Configure, то все должно повториться опять
0
Эксперт Java
3639 / 2971 / 918
Регистрация: 05.07.2013
Сообщений: 14,220
26.10.2017, 10:50
что конкретно тебе не понятно?
0
0 / 0 / 0
Регистрация: 05.10.2017
Сообщений: 13
26.10.2017, 11:09  [ТС]
Например одна из проблем. Вот класс.
Java
1
2
3
4
5
6
public class Animal{
@AnnotationFirst(12)
private int age;
@Configurable
private type Dog;
}
Рефлексией получаю поле type в котором хранится экземпляр Dog. Мне нужно получить значение этого поля- сам экземпляр класса Dog. Чет не получается это сделать.
0
Эксперт Java
 Аватар для KEKCoGEN
2399 / 2224 / 565
Регистрация: 28.12.2010
Сообщений: 8,672
26.10.2017, 11:18
Цитата Сообщение от andreyatake Посмотреть сообщение
Рефлексией получаю поле type
что за поле тайп? Это класс такой? Покажите его код тогда

Цитата Сообщение от andreyatake Посмотреть сообщение
сам экземпляр класса Dog
Экземпляр не создался, как выего получите? Когда и как вы вообще обрабатываете эти аннотации?
0
0 / 0 / 0
Регистрация: 05.10.2017
Сообщений: 13
26.10.2017, 11:26  [ТС]
Java
1
2
3
4
5
6
7
8
9
10
public class Animal{
@AnnotationFirst(12)
private int age;
@Configurable
private  Dog type;
 
public Animal(Dog type){
this.type=dog;
   }
}

Ну допустим в конструкторе задается. Не имеет значения
Ну а поле type просто поле для примера. Факт в том, что в нем храниться объект Dog.

Мне нужно рефлексией получить сначала поле type, что я и делаю. А потом получить его значение - экземпляр Dog. Это уже хз как
0
Эксперт Java
3639 / 2971 / 918
Регистрация: 05.07.2013
Сообщений: 14,220
26.10.2017, 12:17
ты хочешь получить его значение, или задать?
нормально подробно и развернуто опиши, что ты делаешь и что не понимаешь. Русским языком, без кусков кода.
0
0 / 0 / 0
Регистрация: 05.10.2017
Сообщений: 13
26.10.2017, 12:55  [ТС]
Сори, если не понятно.
Сначало расскажу, что должно быть. Есть класс Животное. У него есть поля с примитивными типами и с объектами.
Некоторые поля этого класса имеют аннотации. Если это поле с примитивным типом я ставлю над ним аннотацию№1, в которой указываю какие-то параметры.
Если поле имеет тип какого-то объекта, я пишу над ним аннотацию №2. Она пустая и указывает на то, что в этом поле хранится объект у которого тоже есть поля с аннотациями.

В конфигуратор передается объект Animal. Берутся все поля и проверяются на наличие аннотаций№1. Если они есть, то таким полям присваиваются значения взятые из аннотаций. С этим понятно.
Но что делать, если у поля есть аннотация №2? т.е. в поле лежит объект, у которого есть поля с аннотациями№1, а может быть и №2 тоже. Как обработать его поля? Тут должно быть что-то вроде рекурсии.

Я думал, что для начала нужно как-то получить значение поля с аннотацией№2 - это должен быть какой-то экзмпляр лежащий в этом поле. Т.е есть поле Dog type=new Dog; Z ljk; я должен получить значение поля type- объект класса Dog и уже его запустить в конфигуратор. Но получить его у меня не получается.
Есть поле Field field. В нем лежит объект класса Dog. Можно ли его получить?
0
Эксперт Java
3639 / 2971 / 918
Регистрация: 05.07.2013
Сообщений: 14,220
26.10.2017, 13:01
тебе надо получить класс (Dog) - Field.getType(), кажется.
создать инстанс этого класса (смотри, какие методы есть в Class)?
пройтись по полям этого класса, тем полям, на которых есть аннотации, присвоить значения, для сложных полей вызвать себя, присвоить полю то, что вернется в ответ.
Однако не совсем понятно, зачем это нужно.
0
0 / 0 / 0
Регистрация: 05.10.2017
Сообщений: 13
26.10.2017, 13:19  [ТС]
Спс а можно конкретней.
В конфигуратор поступает (Object object). Каждый раз это разный объект
Я получил все его поля Field[]
Определил, что у какого-то field1 есть аннотация №2 - следовательно в нем лежит объект.
Получаю объект из поля Object object= field.getType(); И нужно что-то с инстансом сделать еще ? Тут я не понимаю. Про инстанс не понятно.
0
Эксперт Java
3639 / 2971 / 918
Регистрация: 05.07.2013
Сообщений: 14,220
26.10.2017, 13:31
1. Почитай, чем класс от объекта отличается
2. я хз, что ты хочешь.
3. можно написать метод типа
Java
1
2
3
4
5
6
7
8
9
10
public static <T> T getInstance(Class<T> clazz) {
        try {
            T instance = clazz.newInstance();
            //initialize
            return instance;
        } catch (InstantiationException | IllegalAccessException e) {
            //do smth with exception
            throw new RuntimeException(e);
        }
    }
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
26.10.2017, 13:31
Помогаю со студенческими работами здесь

SpringBoot + xml конфигурация. Не работает автосвязывание по аннотации
Всем доброго времени суток. Имеется приложение spring-boot-mvc. Конфигурация контекста частично задана аннотациями, частично в xml-е....

аннотации hibernate
Всем привет! Есть аннотации такие вот 1) @Field(analyze = Analyze.NO) 2) @Facet(forField = &quot;id&quot;, encoding =...

Аннотации в Java
Объясните Пожалуйста, что на Java обозначает: &quot;@Override&quot; .

Аннотации, рефлексия
Аннотация применена, но при использовании рефлексии, метод получения аннотаций элемента возвращает массив длинной 0, будто их и нет....

Аннотации (метаданные) на кой
Я только начал изучать java, наткнулся на эти гребаные хорошие аннотации... Читаю Шилдта, обьясняет он слишком уж заумно, облазил неколько...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
12
Ответ Создать тему
Опции темы

Новые блоги и статьи
Трассировка корутин Kotlin с OpenTelemetry
mobDevWorks 14.07.2025
Асинхронное программирование меняет правила игры, особенно когда речь заходит о трассировке операций. В Kotlin с его корутинами эта проблема приобретает особый оттенок, который я хотел бы детально. . .
Облачные приложения на Rust: руководство по архитектуре микросервисов
golander 13.07.2025
Когда я впервые взялся за проектирование облачной платформы для одного из наших клиентов, выбор стоял между привычными Go и Java. Но после нескольких месяцев разработки микросервисной системы,. . .
Как Node.js выполняет асинхронные операции
Reangularity 13.07.2025
Каждый раз, когда я рассказываю про Node. js, возникает один и тот же вопрос: "Как эта штука может быть быстрой, если JavaScript — однопоточный язык?" И это действительно кажется парадоксом. Ведь в. . .
Как писать чистый, тестируемый и качественный код на Python
py-thonny 12.07.2025
Помню свой первый проект на Python. Работал тогда быстро, грязно, лишь бы работало. Код был похож на запутанный клубок - переменные по одной букве, функции на 200 строк, комментарии отсутствовали как. . .
Blazor и контроллер сервопривода IoT Meadow Maple
Wired 11.07.2025
Я решил разобраться, как можно соединить современные веб-технологии с миром "железа". Интересная комбинация получилась из Blazor в качестве веб-интерфейса и микроконтроллера Meadow с его веб-сервером. . .
Генерация OpenQASM из кода Q#
EggHead 10.07.2025
Летом 2024-го я начал эксперименты с библиотекой Q# Bridge, и знаете что? Она оказалась просто находкой для тех, кто работает на стыке разных квантовых экосистем. Основная фишка этой библиотеки -. . .
Изучаем новый шаблон ИИ-чата .NET AI Chat Web App
stackOverflow 10.07.2025
В . NET появилось интересное обновление - новый шаблон ИИ-чата под названием . NET AI Chat Web App. Когда я впервые наткнулся на анонс этого шаблона, то сразу понял, что Microsoft наконец-то. . .
Результаты исследования от команды ARP (июль 2025 г.)
Programma_Boinc 10.07.2025
Результаты исследования от команды ARP (июль 2025 г. ) Африканский проект по дождям (ARP) World Community Grid снова запущен! Мы рады поделиться обновленной информацией о нашем прогрессе с осени. . .
Angular vs Svelte - что лучше?
Reangularity 09.07.2025
Сегодня рынок разделился на несколько четких категорий: тяжеловесы корпоративного уровня (Angular), гибкие универсалы (React), прогрессивные решения (Vue) и новая волна компилируемых фреймворков. . .
Code First и Database First в Entity Framework
UnmanagedCoder 09.07.2025
Entity Framework дает нам свободу выбора, предлагая как Code First, так и Database First подходы. Но эта свобода порождает вечный вопрос — какой подход выбрать? Entity Framework — это. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru