Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/357.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何从java加载实现泛型接口的类型_Java - Fatal编程技术网

如何从java加载实现泛型接口的类型

如何从java加载实现泛型接口的类型,java,Java,请注意: 这个链接没有帮助 嗨,我想知道如何在实现通用接口的代码中加载所有类型,而不使用来自java的外部库 例如,如何加载实现此接口的所有类型并创建它们 public interface MyInterface<TInput> { Void Foo(TInput input); } 公共接口MyInterface{ Void Foo(TInput输入); } 因为这是通用接口,我无法编写代码:MyInterface.class 我能做点像这样的事吗 Service

请注意: 这个链接没有帮助

嗨,我想知道如何在实现通用接口的代码中加载所有类型,而不使用来自java的外部库

例如,如何加载实现此接口的所有类型并创建它们

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)
方法。此后,您可以测试每个类以实现接口。即使如此,这仍然是一个最佳猜测算法。它不能保证找到每个类。