以下代碼在JDK6中編譯。編譯錯誤在JDK7中失敗。javac:所需的不兼容類型:classname <TYPEPARAM> found:classname <java.lang.Object>
java: incompatible types
required: com.jdk7.IExporter<O>
found: com.jdk7.IExporter<java.lang.Object>
編譯器是1.7.0_10,來自Oracle。
$ javac -version
javac 1.7.0_10
代碼
package com.jdk7;
public class GenericIn7 {
public <O> IExporter<O> getExporter(Class<O> objType) {
final IExporter<O> localExporter =
determineExporter(getPersistentInterface(objType));
return null;
}
private <O> IExporter<O> determineExporter(Class<O> persistentInterface) {
return null;
}
protected <O, I extends O> Class<O> getPersistentInterface(Class<I> clazz) {
return null;
}
}
class IExporter<T> {
}
[爲了完整起見, 與IExporter等變化更換通用讓它編譯。 ]
這兩個都使用普通的javac?即,沒有ecj或任何東西? – fge
針對不兼容的Java錯誤修復http://www.oracle.com/technetwork/java/javase/compatibility-417013.html#jdk7 – user1983527
@ user1983527:感謝您的幫助。我在發佈這個問題時檢查過。無法真正將錯誤與其中的任何內容連接起來。 – Jayan