繁体   English   中英

JDK 1.7编译器无法识别通用类

[英]JDK 1.7 compiler does not recognize generic class

我有一个使用Eclipse OSGI jar(org.eclipse.osgi_3.7.2.v20120110-1415.jar)中的类的类,该类在Eclipse IDE及其编译器中进行了很好的编译。 但是,如果我尝试使用Ant和JDK 1.7编译器编译此类,则编译器将输出以下错误:

[javac] /data/ant/sw_jdk1.7/test-Java7/com.tsystems.favbg.ui.core/src/com/
        tsystems/favbg/ui/core/job/AbstractLoader.java:24: 
        error: type CopyOnWriteIdentityMap does not take parameters
[javac]     private final CopyOnWriteIdentityMap<LoaderListener, String>
            eventListenerMap = new CopyOnWriteIdentityMap<>();

error: cannot infer type arguments for CopyOnWriteIdentityMap;
[javac]     private final CopyOnWriteIdentityMap<LoaderListener, String> 
            eventListenerMap = new CopyOnWriteIdentityMap<>();
[javac]   reason: cannot use '<>' with non-generic class CopyOnWriteIdentityMap

显然,javac无法将类识别为使用泛型。 但是,当我使用Java Decompiler打开它时,通用参数得到了公认。 有人知道这个问题并有解决方案吗?

我会说问题出在使用CopyOnWriteIdentityMap类的方式上。 我假设您正在使用此类:

  org.eclipse.osgi.framework.eventmgr.CopyOnWriteIdentityMap

如果查看javadocs ,将会看到它不是泛型类。 从包的位置,我还得到了一个印象,即它不是通用实用程序类。

在Eclipse中进行编译时,也许正在使用其他版本的JAR ...这一个通用类。 无论哪种方式,您通过Ant使用的编译器都认为它不是通用的。

阅读基于JDK 1.6的SCJP认证书时,我发现差异,并尝试编写(复制和粘贴)代码,并在JDK 1.7中进行编译。

也许,我到处都是同样的错误,但是似乎很难理解。 例如,请访问http://www.coderanch.com/forums/posts/list/80/467890#2679297查看我的帖子。 我不是专家,但是我发现Angelika Langer(http://www.angelikalanger.com/Publications.html)的课程吸引了咨询,因为网站上提供了有关Java泛型的教程。

您对此事有何建议?

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM