java - 在以下情况下,如何使用反射为类中的所有对象调用方法?
问题描述
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 的情况下,不会创建任何实例。我必须同时调用空构造函数和非空构造函数。
解决方案
请提供完整的代码和错误。
我认为超类或第一个对象的类没有带空参数的构造函数。
推荐阅读
- kubernetes - Kubernetes 网络策略。无法“wget”到在不同命名空间上运行的 pod?
- google-apps-script - .getRange RC 表示法问题
- angular - 尝试使用 Http get Angular 访问文件时未找到文件错误
- android - 实时数据库规则问题
- view - SQL Server 2019:在视图中内联 UDF
- reactjs - 无法使用相对路径设置画布图像
- python - model.save_weights(save_format='tf') 是否保存优化器状态?
- c# - 可以使用 RestSharp 启用 X 射线跟踪
- jenkins - 想要根据 Jenkinsfile 中的任何输入隐藏/取消隐藏参数
- javascript - 在javascript中切换方向更改类