【发布时间】:2022-12-17 07:22:29
【问题描述】:
如何使用 Javas Reflection API 为方法提供参数?
这个想法是让许多参数类(POJO),每个类都有自己的服务班级。这服务类有一个方法“保存”来保存参数目的。
班级文件导入器应该只按名称使用参数和服务。
这是经过大量简化的代码 sn-p。
class Param extends AbstractParam {
... class body ...
}
class Service extends BaseService {
ConcreteParam save(ConcreteParam param) {
... method body. EntityManager omitted ... }
}
class FileImporter {
void importJson(String serviceName, String paramName, Map<String,Object> jsonMap ) {
//--- Build service object
Class<AbstractService> serviceClass =
(Class<AbstractService>) Class.forName( serviceName );
Constructor<?> ctor =
serviceClass.getConstructor( (Class<?>[]) null );
AbstractService service = (AbstractService) ctor.newInstance();
//--- Build parameter constructor for reuse
Class<AbstractParameter> paramClass =
(Class<AbstractParameter>) Class.forName( paramName );
paramConstructor = paramClass .getConstructor( (Class<?>[]) null );
//--- Build parameter and fill from map
AbstractParameter param = paramConstructor.newInstance();
BeanHelper.populate( param, entityMap ); // populates param recursively
param = service.save( param );
}
这种方法以编译器错误“方法‘保存’不适用于参数”结束。
【问题讨论】:
标签: java reflection abstract-class