我有以下代码
public interface PredicateGeneric<T,Z>{
boolean compare(T t, Z z);
}
然后
PredicateGeneric<Integer,Integer> p= (Integer i, Integer j) -> i>=j;
最后
public static <T,Z> T getInt(Integer a, Integer b, PredicateGeneric<T,Z> p){
if(p.compare(a,b)==true){
return a;
}else{
return b;
}
}
该方法由
调用System.out.println(getInt(4,5,p));
在我的主要方法中。
我在Eclipse中收到以下消息: &#34; PredicateGeneric类型中的方法compare(T,Z)不适用于参数(Integer,Integer)&#34;
我过去曾经遇到过仿制药的麻烦,所以我犯了一个错误让我感到惊讶,但我找不到它。
答案 0 :(得分:2)
将类型声明更改为:
public static <T,Z> T getInt(T a, Z b, PredicateGeneric<T,Z> p){
if(p.compare(a,b)==true){
return a;
}else{
return b;
}
}
但是现在你不能返回a或b,因为他们的类型与声明不匹配。您可以使用a和b声明此方法并返回具有相同类型的值,也可以考虑不同的返回值。