Отражение
Одним из самых сильных аспектов Java является надежный API отражения, предоставляемый стандартными библиотеками.
Отражение позволяет изучать и изменять структуры и поведение классов,методы и атрибуты во время выполнения.
Отражение, по моему мнению, в одиночку отвечает за надежную экосистему Java платформ, сред и языков JVM, доступных сегодня.
Осторожно
Несмотря на то, что рефлексия является мощной и, безусловно, является частью широко распространенного успеха Java, я предостерегаю от ее использования во многих случаях.
По большей части рефлексия используется в программном обеспечениииспользуется другим программным обеспечением (фреймворки, платформы, языки и т. д.).Обычно, когда я вижу, что кто-то спрашивает об отражении (особенно, если он не называет это по имени), он думает о проблеме неправильно.
Я определенно хотел бы услышать ваш вариант использования, чтобы мы могли предложить другой способ его рассмотрения.
Пример кода
Ниженекоторый псевдо-код, который иллюстрирует один из способов выполнить то, что вы пытаетесь сделать.Я называю это псевдо-кодом, потому что я не скомпилировал его, и он, вероятно, может быть оптимизирован.
Прежде чем добавить его в свой проект, я хотел бы повторить, что вы должны опубликовать вашу конкретную проблему, чтобы мы могли проанализировать ее и, возможно, помочь вам по-другому об этом думать.
final String ATTR = "test";
Class<?> clazz = Class.forName("your.fully.qualified.class.name");
Field[] fields = clazz.getFields();
for ( Field field : fields ) {
String name = field.getName();
if ( name == ATTR ) {
Object value = field.get(name);
}
}