-1
我是新來的泛型,並想解決一個小任務。比較<V extends Comparable <V>>到Integer
我想給類ComparePredicate類型的「V extends Comparable」類型的兩個對象,然後檢查方法「isOk」,如果Tree類的int值「值」在這兩個對象之間。 我選擇了compareTo方法,因爲Integer和V應該是類型可比的,但編譯器會給出錯誤。 我認爲它只是一個語法問題。
那麼,我該如何寫出正確的。希望你們能幫助我。 感謝您的回答。
類ComparePredicate
public class ComparePredicate<V extends Comparable<V>> implements TreePredicate<V> {
V minEle;
V maxEle;
public ComparePredicate(V minEle, V maxEle) {
this.minEle = minEle;
this.maxEle = maxEle;
}
@Override
public boolean isOk(Tree<V> tree) {
return minEle.compareTo(Integer.valueOf(tree.getValue())) > 0 &&
maxEle.compareTo(Integer.valueOf(tree.getValue())) < 1;
//COMPILER ERROR: "The method compareTo(V) in the type Comparable<V> is not applicable for the arguments (Integer)"
return false;
}
}
樹類
public class Tree<T> {
private int value;
private final Tree<T> left;
private final Tree<T> right;
public Tree(int v, Tree<T> l, Tree<T> r) {
this.value = v;
this.left = l;
this.right = r;
}
public int getValue() {
return this.value;
}
public Tree<T> getLeft() {
return this.left;
}
public Tree<T> getRight() {
return this.right;
}
}
爲什麼你認爲'V'與'Integer'相差無幾? –
你可以檢查你的V(minEle,maxEle)是一個整數還是更好的一個數字(使用實例),然後投射和比較... –
@SotiriosDelimanolis,因爲Integer實現了Comparable和V。所以我認爲他們可以比較 –