Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/338.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 Guice:bind类<&燃气轮机;上课<&燃气轮机;_Java_Generics_Guice_Inject - Fatal编程技术网

Java Guice:bind类<&燃气轮机;上课<&燃气轮机;

Java Guice:bind类<&燃气轮机;上课<&燃气轮机;,java,generics,guice,inject,Java,Generics,Guice,Inject,我需要为编译时未知的类配置绑定。此外,这些类必须由不同的类装入器装入。以下片段大致描述了我的意图: Classloader cl = findClassloader(...); Class<?> key = cl.loadClass(keyClassName); Class<?> impl = cl.loadClass(implClassName); 但是,与通配符类类型一样,这不起作用。简单地告诉Guice完全限定的类名(我想这是一种从属性文件加载绑定的机制)也不起作

我需要为编译时未知的类配置绑定。此外,这些类必须由不同的类装入器装入。以下片段大致描述了我的意图:

Classloader cl = findClassloader(...);
Class<?> key = cl.loadClass(keyClassName);
Class<?> impl = cl.loadClass(implClassName);

但是,与通配符类类型一样,这不起作用。简单地告诉Guice完全限定的类名(我想这是一种从属性文件加载绑定的机制)也不起作用,因为Guice不知道使用哪个类加载器。

泛型是一个很好的工具,可以确保您所做的事情是正确的,但它们不是为这样的复杂情况设置的。幸运的是,这里根本不需要泛型,编译后它们将被删除

试试这个:

bind(key).to((Class) impl);
或将其包装在警告抑制包装中:

@SuppressWarnings({"rawtypes"})
void bindUnsafely(Class<?> key, Class<?> impl) {
  bind(key).to((Class) impl);
}
@SuppressWarnings({“rawtypes”})
void bindensafely(类键,类impl){
绑定到((类)impl);
}
@SuppressWarnings({"rawtypes"})
void bindUnsafely(Class<?> key, Class<?> impl) {
  bind(key).to((Class) impl);
}