Как и для this question, мне нужно получить доступ ко всем частным полям одного экземпляра POJO. Разница в том, что я не знаю конкретных имен полей (ях), которые я хочу раньше времени.Список всех частных полей объекта Java?
Например, если мой POJO является:
public class Widget {
private java.lang.String fizz;
private java.lang.Boolean buzz;
private com.me.myapp.Foo foo;
}
Я ищу какой-то способ проверки на Widget
экземпляре (или сам класс) и вижу, что у него есть эти 3 поле/типов, не зная, их имена/типы раньше времени.
Возможно ли это? Если да, то как? Если нет, то почему?
Update:
System.out.println("classToInspect = " + classToInspect.getName() + ", and fields are:\n");
for(Field f : allFields)
System.out.println(f.getType());
Печать:
classToInspect = com.myorg.myapp.LoggerConfig, and fields are:
int
int
int
class java.lang.reflect.Constructor
class java.lang.Class
class java.lang.String
class java.security.ProtectionDomain
boolean
class java.lang.ref.SoftReference
class java.lang.ref.SoftReference
class java.lang.ref.SoftReference
class java.lang.ref.SoftReference
class java.lang.ref.SoftReference
class java.lang.ref.SoftReference
class java.lang.ref.SoftReference
class java.lang.ref.SoftReference
int
int
class sun.reflect.generics.repository.ClassRepository
long
class [Ljava.io.ObjectStreamField;
class sun.reflect.ReflectionFactory
boolean
class [Ljava.lang.Object;
interface java.util.Map
class [Ljava.lang.annotation.Annotation;
interface java.util.Map
interface java.util.Map
class sun.reflect.annotation.AnnotationType
Пожалуйста, обратите внимание: ни одно из этих полей поля/свойства/члены моего фактического LoggerConfig
класса; они должны быть обеспечены/добавлено через отражение или часть Object
суперкласса ...
Не этот вопрос решить проблему? –
Отметьте этот вопрос: http://stackoverflow.com/questions/1555658/is-it-possible-in-java-to-access-private-fields-via-reflection –
И почему вы просто хотите получить к ним доступ? – fge