Java反射:如何从对象获取字段值,而不知道其类
说,我有一个方法返回List
带有一些对象的自定义。他们归还Object
了我。我需要从这些对象中获取某个字段的值,但是我不知道这些对象的类。
有没有办法通过Reflecion或其他方式做到这一点?
回答:
假设一个简单的情况,您的字段是public
:
List list; // from your methodfor(Object x : list) {
Class<?> clazz = x.getClass();
Field field = clazz.getField("fieldName"); //Note, this can throw an exception if the field doesn't exist.
Object fieldValue = field.get(x);
}
但这很丑陋,我省略了所有尝试,并提出了许多假设(公共领域,可用的反射,不错的安全管理器)。
如果您可以更改返回a的方法List<Foo>
,这将变得非常容易,因为迭代器随后可以为您提供类型信息:
List<Foo> list; //From your methodfor(Foo foo:list) {
Object fieldValue = foo.fieldName;
}
或者,如果您正在使用Java 1.4接口,而泛型不可用,但您知道应该在列表中的对象类型…
List list;for(Object x: list) {
if( x instanceof Foo) {
Object fieldValue = ((Foo)x).fieldName;
}
}
无需反射:)
以上是 Java反射:如何从对象获取字段值,而不知道其类 的全部内容, 来源链接: utcz.com/qa/403513.html