首页 > 解决方案 > 在以下情况下,如何使用反射为类中的所有对象调用方法?

问题描述

for (final Field field : someClass.getClass().getDeclaredFields()) {
                final Method getId = field.getType().getMethod("getId");
                getId.setAccessible(true);
                SomeComponent obj = (SomeComponent)getId.invoke(field.getType().newInstance());
}

我在 someClass 中有对象,它们都是另一个具有 getId 函数的类的子类。我在 someClass 中有两个相同类的对象,它具有以下构造函数。

 public Object1(SomeComponent id) {
      super(id);
   }

其他对象具有以下构造函数:

public Object2() {
      super(SomeComponent.CORRESPONDING_ID);
   }

请注意 SomeComponent 是一个枚举类。

因此,当我调用 newInstance() 方法时,它适用于每个具有 Object2 类型构造函数的对象,但在 Object1 的情况下,不会创建任何实例。我必须同时调用空构造函数和非空构造函数。

标签: javareflectionjava-8

解决方案


请提供完整的代码和错误。

我认为超类或第一个对象的类没有带空参数的构造函数。


推荐阅读