Java 比较<;V.可比性<;V>&燃气轮机;到整数
我是泛型新手,想解决一个小问题 我想给ComparePredicate类指定两个类型为“V extends Comparable”的对象,然后如果树类的int值“value”在这两个对象之间,则签入方法“isOk”。 我选择compareTo方法是因为Integer和V应该是comparable类型,但编译器给出了一个错误。 我认为这只是一个句法问题 那么,我需要如何正确地书写它呢。希望你们能帮助我。 谢谢你的回答 类比较预测Java 比较<;V.可比性<;V>&燃气轮机;到整数,java,generics,comparable,generic-programming,Java,Generics,Comparable,Generic Programming,我是泛型新手,想解决一个小问题 我想给ComparePredicate类指定两个类型为“V extends Comparable”的对象,然后如果树类的int值“value”在这两个对象之间,则签入方法“isOk”。 我选择compareTo方法是因为Integer和V应该是comparable类型,但编译器给出了一个错误。 我认为这只是一个句法问题 那么,我需要如何正确地书写它呢。希望你们能帮助我。 谢谢你的回答 类比较预测 public class ComparePredicate<V
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;
}
}
公共类ComparePredicate实现TreePredicate{
V minEle;
V maxEle;
公共比较预测(V minEle,V maxEle){
this.minEle=minEle;
this.maxEle=maxEle;
}
@凌驾
公共布尔isOk(树){
返回minEle.compareTo(Integer.valueOf(tree.getValue())>0&&
maxEle.compareTo(Integer.valueOf(tree.getValue())<1;
//编译器错误:“Comparable类型中的compareTo(V)方法不适用于参数(整数)”
返回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;
}
}
公共类树{
私有int值;
私人最后一棵树离开;
私有最终树权;
公共树(int v,树l,树r){
该值=v;
这个左=l;
这个。右=r;
}
public int getValue(){
返回此.value;
}
公共树getLeft(){
把这个还给我;
}
公共树getRight(){
归还这个。对;
}
}
更改树类
static class Tree<T> {
private T value;
private final Tree<T> left;
private final Tree<T> right;
public Tree(T v, Tree<T> l, Tree<T> r) {
this.value = v;
this.left = l;
this.right = r;
}
public T getValue() {
return this.value;
}
// getters ...
}
为什么你认为一个
V
与一个整数
?你可以检查你的V(minEle,maxEle)是一个整数还是一个更好的数字(使用的实例),然后转换并比较…@SotiriosDelimanolis,因为整数也实现了compariable和V。所以我认为它们可以比较V
和V
相比<代码>整数与整数
相当。
@Override
public boolean isOk(Tree<V> tree) {
return minEle.compareTo(tree.getValue()) <= 0 &&
maxEle.compareTo(tree.getValue()) >= 0;
}