对于具有泛型集合的循环,无法在Java 7中进行编译
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了对于具有泛型集合的循环,无法在Java 7中进行编译,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1358字,纯文字阅读大概需要2分钟。
内容图文
![对于具有泛型集合的循环,无法在Java 7中进行编译](/upload/InfoBanner/zyjiaocheng/724/ec53106c51a24b40879343501e506da6.jpg)
也许有人可以解释下面的行为.我知道从Java 6到7有一些通用的类型处理更改,但我找不到解释这个.
这个库正在发生这种情况:
<dependency>
<groupId>org.apache.felix</groupId>
<artifactId>org.apache.felix.framework</artifactId>
<version>3.2.2</version>
</dependency>
以下演示代码:
import org.apache.felix.framework.util.manifestparser.ManifestParser;
ManifestParser manifestParser = new ManifestParser(null, null, null, null);
for (Capability capability : manifestParser.getCapabilities()) {
capability.toString();
}
// where the signature of getCapabilities() is:
// public List<Capability> getCapabilities() { return m_capabilities; }
// and there are no other methods with similar signatures or names
这个演示代码使用JDK 6(x86,1.6.0_45,32位)编译得很好,但无法使用JDK 7(x86,1.7.0_25,32位,相同主机)进行编译:
// line number matches the for loop
java: incompatible types
required: org.apache.felix.framework.capabilityset.Capability
found: java.lang.Object
经过一番头疼,我有一个解决方法,但没有解释.以下对演示代码的修改使用JDK 7进行编译:
ManifestParser manifestParser = new ManifestParser(null, null, null, null);
List<Capability> capabilities = manifestParser.getCapabilities();
for (Capability capability : capabilities) {
capability.toString();
}
为什么是这样?
解决方法:
见How to compile mavenized OSGi 4.3 bundle with OpenJDK 7?
由于该felix jar中的OSGi类,您无法使用它来编译Java 7.
内容总结
以上是互联网集市为您收集整理的对于具有泛型集合的循环,无法在Java 7中进行编译全部内容,希望文章能够帮你解决对于具有泛型集合的循环,无法在Java 7中进行编译所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。