1
下面這個簡單的程序與Eclipse編譯器編譯,但沒有界限javac的:Java的通用問題:「不兼容的類型;推斷類型參數(S)java.lang.Object中不符合類型變量(一個或多個)筆
public class Test {
public static interface Function<T1, T2, Boolean> {
Boolean apply(T1 t1, T2 t2);
}
private static <T extends Comparable<T>> Function<T, T, Boolean> _cmp(final boolean lt) {
return new Function<T, T, Boolean>() {
@Override
public Boolean apply(T t1, T t2) {
if (lt) {
return (t1.compareTo(t2) < 0);
} else {
return (t1.compareTo(t2) > 0);
}
}
};
}
public static Function LESS_THAN = _cmp(true); // error line
public static Function GREATER_THAN = _cmp(false); // error line
}
的Javac的錯誤消息:
java: P:\java-tool\src\main\java\T3.java:20: incompatible types; inferred type argument(s) java.lang.Object do not conform to bounds of type variable(s) T
found : <T>T3.Function<T,T,java.lang.Boolean>
required: T3.Function
什麼'javac'版本? –
我不明白你爲什麼名爲'Boolean'的類型參數。 –
用'javac 1.7.0_45'編譯好我。 –