簡體   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