如何从java加载实现泛型接口的类型
请注意: 这个链接没有帮助 嗨,我想知道如何在实现通用接口的代码中加载所有类型,而不使用来自java的外部库 例如,如何加载实现此接口的所有类型并创建它们如何从java加载实现泛型接口的类型,java,Java,请注意: 这个链接没有帮助 嗨,我想知道如何在实现通用接口的代码中加载所有类型,而不使用来自java的外部库 例如,如何加载实现此接口的所有类型并创建它们 public interface MyInterface<TInput> { Void Foo(TInput input); } 公共接口MyInterface{ Void Foo(TInput输入); } 因为这是通用接口,我无法编写代码:MyInterface.class 我能做点像这样的事吗 Service
public interface MyInterface<TInput> {
Void Foo(TInput input);
}
公共接口MyInterface{
Void Foo(TInput输入);
}
因为这是通用接口,我无法编写代码:MyInterface.class
我能做点像这样的事吗
ServiceLoader<Abc> loader = ServiceLoader.load(Class<? implements MyInterface<Integer>.class);
ServiceLoader=ServiceLoader.load(ClassI不知道是否有办法获得所有实现类和接口,尽管我认为,您可以使用java.lang.reflect.Type来比较泛型类。但除此之外,您可以为该行为创建一个注册表,这可能比您现在想要的要简单得多。您几乎肯定必须为此使用一个库,unl如果您希望编写一个奇特的类加载器,一个可能的解决方案是使用Google的com.Google.common.reflect.ClassPath
类,使用GetToLevel类(packageName)获得所有类的列表
method。此后,您可以测试每个类以实现接口。即使如此,这仍然是一个最佳猜测算法。它不能保证找到每个类。我不知道是否有办法获得所有实现类和接口,尽管我认为,您可以使用java.lang.reflect.Type来比较泛型类。但是除此之外,您还可以为该行为创建一个注册表,这可能比您现在想要的要简单得多。除非您希望编写一个奇特的类加载器,否则您几乎肯定需要为此使用一个库。一个可能的解决方案是使用Google的com.Google.common.reflect.ClassPath
class usi获取所有类的列表使用getTopLevel类(packageName)
方法。此后,您可以测试每个类以实现接口。即使如此,这仍然是一个最佳猜测算法。它不能保证找到每个类。