在我的项目中,我有一个工厂方法,它加载一个实现接口的对象.你传入你想要的课程并接受它的实例化,就像这样.
public class Factory {
public static E load( Class clss ) throws Exception {
return clss.newInstance();
}
}
你可以像这样调用它:
MyObject obj = Factory.load( MyObject.class );
这个代码在Eclipse 3.4和Java 6u13中运行得很好,但是今天我收到了一台新笔记本电脑并安装了Eclipse 3.5和java 6u15,现在我到处都遇到类型不匹配.
MyObject obj = Factory.load( MyObject.class );
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Type mismatch: cannot convert from SomeInterface to MyObject
在工厂之前将一个演员阵容放在那条线上会使它消失并且一切运行良好,但它会让线条变得不那么干净,而且之前我不需要它,那么是什么给出了?
解决方法:
这是获取此错误所需的所有代码吗?我在今天看到的一些代码中看到过非常相似的东西.还有一个附加参数传递到Factory方法的等效项中,该方法也具有泛型类型.这是缺少它的通用定义,我认为应该归咎于混淆编译器.
即,如果你的工厂方法看起来像
public class Factory {
public static E load( Class class, Key key ) {
// return an instance of E
}
}
哪里有一些Key类定义了这样的东西
public class Key {
....
}
给这样的东西调用方法,注意关键字声明没有泛型
Key key = new Key()
MyObject obj = Factory.load( MyObject.class, key );
希望有所帮助,
标签:java,eclipse,generics
来源: https://codeday.me/bug/20190701/1344496.html