如何在java中比较泛型类型和非泛型类型值?

如何在java中比较泛型类型和非泛型类型值?,java,Java,下面的代码正在检查给定的二叉树是否是二叉搜索树,这是众所周知的代码。 但问题是节点类有一个泛型类型值 因此,下面的代码会出现错误,因为它比较了泛型类型T和非泛型类型int。我尝试了这个和那个,但找不到解决方案。在这种情况下,我也不能使用compareTo()。 (当然,如果我将Node类更改为具有int值,但我不希望像这样更改Node类。) 有什么想法吗 public class Node<T> { Node<T> left; Node<T> right; T

下面的代码正在检查给定的二叉树是否是二叉搜索树,这是众所周知的代码。 但问题是节点类有一个泛型类型值

因此,下面的代码会出现错误,因为它比较了泛型类型T和非泛型类型int。我尝试了这个和那个,但找不到解决方案。在这种情况下,我也不能使用compareTo()。 (当然,如果我将Node类更改为具有int值,但我不希望像这样更改Node类。)

有什么想法吗

public class Node<T> {
Node<T> left;
Node<T> right;
T   value;

public Node(T value) {
this.value = value;
this.left = null;
this.right = null;
}

public boolean BTisBST(Node<T> root) {
if(root == null)
return false;

return BTisBST(root, Integer.MIN_VALUE, Integer.MAX_VALUE);
}

public boolean BTisBST(Node<T> root, int min, int max) {
if(root == null)
return true;

if(min > root.value || root.value > max )
return false;

return  BTisBST(root.left, min, root.value && BTisBST(root.right, root.value + 1, max);
}   
公共类节点{
左淋巴结;
节点权;
T值;
公共节点(T值){
这个值=值;
this.left=null;
this.right=null;
}
公共布尔BTisBST(节点根){
if(root==null)
返回false;
返回BTisBST(根,Integer.MIN\u值,Integer.MAX\u值);
}
公共布尔BTisBST(节点根、最小整数、最大整数){
if(root==null)
返回true;
如果(最小值>根值| |根值>最大值)
返回false;
返回BTisBST(root.left,min,root.value&&BTisBST(root.right,root.value+1,max);
}   

最简单的解决方案是更改模板类型

// Now take any type(s) that are Comparable.
public class Node<T extends Comparable<T>> {
}
//现在选择任何可比较的类型。
公共类节点{
}

由于t是泛型类型,因此不能假设t与整数可比。请为节点的泛型类型参数指定一个可比的绑定。@SotiriosDelimanolis或提供一个比较器