java – 为什么我的泛型方法停止工作?
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了java – 为什么我的泛型方法停止工作?,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1241字,纯文字阅读大概需要2分钟。
内容图文
![java – 为什么我的泛型方法停止工作?](/upload/InfoBanner/zyjiaocheng/782/076f41443b7d4bff9a10c749eb073609.jpg)
在我的项目中,我有一个工厂方法,它加载一个实现接口的对象.你传入你想要的课程并接受它的实例化,就像这样.
public class Factory {
public static <E extends SomeInterface> E load( Class<E> 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 extends SomeInterface> E load( Class<E> class, Key key ) {
// return an instance of E
}
}
哪里有一些Key类定义了这样的东西
public class Key<Datatype> {
....
}
给这样的东西调用方法,注意关键字声明没有泛型
Key key = new Key()
MyObject obj = Factory.load( MyObject.class, key );
希望有所帮助,
内容总结
以上是互联网集市为您收集整理的java – 为什么我的泛型方法停止工作?全部内容,希望文章能够帮你解决java – 为什么我的泛型方法停止工作?所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。