当前位置: 首页 > 面试题库 >

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

施飞驰
2023-03-14
问题内容

说,我有一个方法返回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;
   }
}

无需反射:)



 类似资料:
  • 比方说,我有一个方法,返回一个自定义的与一些对象。它们作为返回给我。我需要从这些对象中获取某个字段的值,但是我不知道对象的类。 有没有办法通过反射或其他方式做到这一点?

  • 问题内容: 我有一个具有String字段的对象。我可以通过致电获得该字段: 我设置了一个方法来设置此实例的字段的值,但是各个getter似乎是,这很奇怪,因为我希望它是。 如何获取实例的值? 问题答案: 如果使用,则“ setter”为,“ getter”为。在 这两种 情况下,第一个参数都是您要在其上访问字段的实例。

  • 现在,有没有可能通过反思来实现这一点呢?

  • 问题内容: 说我有一个具有一些成员变量的类,一个或多个是具有成员变量的另一个类。如何获得两个类中每个变量的值? 我可以通过以下方式获取变量:通过调用Foo对象的值,然后再次对其进行迭代以获取子类变量。 但是,如何在没有该类实例的情况下获取每个子类成员变量的值?我的平凡示例之所以有用,是因为该类的每个实例的变量都相同,因此我可以调用 我想如果能以某种方式从字段中获取对象的实例,那可能会起作用? 提前

  • 我发现这是一个私人领域,没有直接的方法来获得它。有办法出去吗?我使用jdk7。tks前进。

  • 问题内容: 我有一个方法: 当运行时,我得到如下输出: 现在我该怎样提取实际字符串值入, 使用反射? 问题答案: 看起来您需要引用该类的实例。您可能要调用get和pass的引用,将返回值转换为String。 您可以使用get,如下所示: