从反射返回对类的引用以调用工厂中的构造函数

问题描述

在我的项目中,我有一个包含简单转换器对象的 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 (将#修改为@)