Как печатать значения объекта в Java, когда у вас нет исходного кода для класса?
public class MyClass {
ClassABC abc = new ClassABC();
}
У меня просто есть .class файл ClassABC. Я хочу напечатать все общедоступные, частные, защищенные и значения по умолчанию для объекта "abc". Как это сделать с помощью Reflection?
Ответ 1
Вы можете получить все поля Class#getDeclaredFields(). Каждый возвращает объект Field, в котором вы, в свою очередь, можете использовать get() для получения значения. Чтобы получить значения для непубличных полей, вам нужно установить Field#setAccessible() в true.
Итак, в орехе:
ClassABC abc = new ClassABC();
for (Field field : abc.getClass().getDeclaredFields()) {
field.setAccessible(true);
String name = field.getName();
Object value = field.get(abc);
System.out.printf("Field name: %s, Field value: %s%n", name, value);
}