Вы можете рассмотреть Jakarta Bean Utils
String street = (String) PropertyUtils.getProperty(user, "address.street");
Вы можете перемещаться по графу объектов, используя точечные обозначения. Вы также можете получить доступ к индексированным свойствам. Подробнее на документах.
Один из недостатков заключается в том, что Bean Utils ожидает, что перемещаемый вами график не содержит нулевых ссылок.
Приведенный ниже фрагмент кода выкинет NPE
Person person = new Person();
person.setAddress(null);
String street = (String) PropertyUtils.getProperty(person, "address.street");
Чтобы преодолеть это ограничение, моя команда реализовала класс, который создает экземпляры всех нулевых ссылок на график по требованию. Этот код основан на рефлексии и динамических прокси (CGLIB).