Как вызвать геттер в POJO через API отражения

Есть один метод получения, скажем, getAddressText1(), который я хочу вызвать в pojo, который разработан следующим образом:

public class AccountDetails{

public String name;
public Address address;
.
.
//getters and setters
}

Теперь этот addressText1 внутри Address

что-то типа

public class Address{

public String addressText1;
.
.
//getters and setters
}

теперь, если я вызову getAddressText1 в AccountDetails, он вызовет исключение methodnotfound.

Поскольку это отражение, у меня нет элемента управления, который можно было бы применить напрямую к Address.

Пожалуйста, ответьте, если знаете решение.

Спасибо!!

так что сначала получите адрес, затем получите addressText. ваши переменные, вероятно, следует объявить частными

Stultuske 06.12.2018 12:15

@Stultuske, все это общее, я получу имя метода из файла свойств. позволяет нам предположить -: сначала я получу getName (), затем я должен применить его через функцию вызова как getName (). invoke (accountObject). тогда я получу getAddressText1 (), тогда я буду вызывать его в accountObject как getAddressText1 (). invoke (accountObject)

Rishabh Bansal 06.12.2018 12:21
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
0
2
53
2

Ответы 2

Если вы хотите получить addressText1 из address, создайте внутри AccountDetails метод, например getAddress (если у вас его еще нет):

public class AccountDetails {

    private Address address;

    public Address getAddress() {
        return this.address;
    }

    // Other code
}

Тогда вы можете вызвать:

String addressText1 = myAccountVariable.getAddress().getAddressText1();

Где myAccountVariable - это объект AccountDetails.

Я делаю это через Reflection API. Все должно быть сделано во время выполнения.

Rishabh Bansal 06.12.2018 12:22

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

Stultuske 06.12.2018 12:24

@Stultuske Пожалуйста, сначала попытайтесь понять вопрос. вы получаете метод откуда-то еще, например getName (), getAddressText1 (). Нам просто нужно сопоставить с основным POJO, которым в нашем случае является AccountDetail. И поскольку у нас нет явного отображения адреса 1, исключение будет методом не найден.

Rishabh Bansal 06.12.2018 12:31

итак, вы хотите из своего AccountDetails "волшебным образом" получить addressText1? что еще более странно, вы хотите на основе вызова getName () получить addressText1? Что, если позже будет добавлен второй адрес?

Stultuske 06.12.2018 13:02

Вы верите, что кодирование волшебным образом дает вам данные ..? Сначала внимательно прочтите требование, а затем сделайте подобные комментарии ... Я думаю, вам следует сначала подготовить свои знания к Reflection API.

Rishabh Bansal 06.12.2018 13:34

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

После использования метода getAddress() вы можете вызвать метод, определенный в классе Address, как;

String address = accountDetailsObj.getAddress().getAddressText1();

accountDetailsObj является объектом класса AccountDetails.

ему не нужно создавать геттер, согласно его описанию, есть один

Stultuske 06.12.2018 12:24

Другие вопросы по теме