我有一个类,它使用 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 打开它时,泛型参数被很好地识别。有人知道这个问题并有解决方案吗?