[英]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.