我需要为编译时不知道的类配置绑定。此外,这些类必须由不同的类加载器加载。下面的片段大致描述了我的意图:
Classloader cl = findClassloader(...);
Class<?> key = cl.loadClass(keyClassName);
Class<?> impl = cl.loadClass(implClassName);现在,我想简单地将键类绑定到impl类,如
bind(key).to(impl);但是,与通配符类类型一样,这不起作用。简单地告诉Guice完整的限定类名(我想有一种机制可以从属性文件加载绑定)也是行不通的,因为guice不知道使用哪个类加载器。
发布于 2014-10-31 06:35:44
泛型是一个很好的工具,可以确保您做的是正确的事情,但是它们不适合这样复杂的情况。幸运的是,泛型在这里一点也不需要,编译时就会擦除它们。
试试这个:
bind(key).to((Class) impl);或者将其包装在警告抑制的包装中:
@SuppressWarnings({"rawtypes"})
void bindUnsafely(Class<?> key, Class<?> impl) {
bind(key).to((Class) impl);
}https://stackoverflow.com/questions/26650377
复制相似问题