Java反射:如何从对象获取字段值,而不知道其类

说,我有一个方法返回List带有一些对象的自定义。他们归还Object了我。我需要从这些对象中获取某个字段的值,但是我不知道这些对象的类。

有没有办法通过Reflecion或其他方式做到这一点?

回答:

假设一个简单的情况,您的字段是public

List list; // from your method

for(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 method

for(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

回到顶部