问题描述
在我的项目中,我有一个包含简单转换器对象的 java 包。这些对象有一个功能:“转换”。此函数会将参数转换为另一种格式。
一旦我将另一个类添加到地图中,我就会给该类一个注释,以便我可以找到带有反射的类。
现在我看到有时类需要一个额外的参数,例如当我有一个拆分转换器时。我认为最好的方法是在调用类后立即在构造函数中设置参数。
我现在正在做的是,一旦反射看到转换器,它就会自动创建该类的新实例。
public static Map<String,IConverter> getConverterMappings() {
Reflections reflections = new Reflections("prefix.domainname.project.utils.converters");
Set<Class<?>> converterClasses = reflections.getTypesAnnotatedWith(Converter.class);
return converterClasses.stream()
.collect(Collectors.toMap(
converterClass -> converterClass.getAnnotation(Converter.class).name(),ConverterFinderImpl::createNewInstanceOfClass
));
}
private static <T> IConverter createNewInstanceOfClass(Class<T> someClass) {
try {
return (IConverter) someClass.getDeclaredConstructor().newInstance();
} catch (Exception e) {
throw new IllegalArgumentException(e);
}
}
如您所见,它返回一个包含字符串和转换器类的映射。稍后将使用该字符串来查找相应的转换器。 我需要的是获取对类的引用,而不是类本身,以便我可以在工厂中调用它。
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)