Java泛型类测试

Java泛型类测试,java,generics,binary-search-tree,Java,Generics,Binary Search Tree,我试图测试我编写的java泛型类,这是我的测试 public class BSTTest { public void testInsert() { int height; BST<int> myTree = new BST<int>(); myTree.insert(1); } } 公共类测试 { 公共无效测试集() { 内部高度; BST myTree=new BST(); myTree.in

我试图测试我编写的java泛型类,这是我的测试

public class BSTTest
{
    public void testInsert()
    {
        int height;
        BST<int> myTree = new BST<int>();
        myTree.insert(1);
    }

} 
公共类测试
{
公共无效测试集()
{
内部高度;
BST myTree=new BST();
myTree.insert(1);
}
} 
但是当我编译时,我得到了一个意外类型的错误,它说如果找到了一个int,但需要在BST myTree=new BST()行上引用;这是什么意思

下面是我的二叉搜索树和节点类供参考

public class BST<E extends Comparable<E>>
{
    public Node<E> root;


    public BST()
    {
        root = null;
    }
    //insert delete find height
    public void find(E s, Node<E> n)
    {
        //empty tree, root is null
        if(n == null)
        {
            System.out.println("Item not present.");
        }
        //n is the node where s is, return n
        else if(n.getData().equals(s))
        {
            System.out.println("Item present");
        }
        //s is greater than n, look for s on the right subtree
        else if(s.compareTo(n.getData()) > 0)
        {
            find(s, n.getRight());
        }
        //s is less than n, look for s on the left subtree
        else
        {
            find(s, n.getLeft());
        }
    }

    public int height() 
    {
        int count;
        return count = height(root); 
    }

    private int height(Node<E> n)
    {
        int ct = 0;
        if(n == null)
        {

        }

        else
        {

            int left = height(n.getLeft());

            int right = height(n.getRight());

            ct = Math.max(left, right) + 1;
        }
        return ct;
    } 

    public void insert(E s) 
    {
        root = insert(s, root);
    } 

    private Node<E> insert(E s, Node<E> T)
    {
        //easiest case, empty tree, create new tree
        if(T == null)
        {
            T = new Node<E>(s,null,null);
        }
        //easiest case, found s
        else if(s.compareTo(T.getData()) == 0)
        {
            System.out.println("Item already present.");
        }
        //s is greater than T, insert on right subtree
        else if(s.compareTo(T.getData()) > 0)
        {
            T.setRight(insert(s, T.getRight()));
        }
        //s is less than T, insert on left subtree
        else
        {
            T.setLeft(insert(s,T.getLeft()));
        }
        return T;
    }

    public void delete(E d)
    {
    }

}
公共类BST
{
公共节点根;
公共BST()
{
root=null;
}
//插入删除查找高度
公共无效查找(ES,节点n)
{
//空树,根为空
如果(n==null)
{
System.out.println(“项目不存在”);
}
//n是s所在的节点,返回n
else如果(n.getData().equals)
{
系统输出打印项次(“存在项”);
}
//s大于n,请在右子树上查找s
如果(s.compareTo(n.getData())>0)为else
{
查找(s,n.getRight());
}
//s小于n,在左子树上查找s
其他的
{
查找(s,n.getLeft());
}
}
公共整数高度()
{
整数计数;
返回计数=高度(根);
}
专用整数高度(节点n)
{
int-ct=0;
如果(n==null)
{
}
其他的
{
int left=高度(n.getLeft());
int right=高度(n.getRight());
ct=数学最大值(左、右)+1;
}
返回ct;
} 
公共空白插入(E-s)
{
根=插入(s,根);
} 
专用节点插入(ES、节点T)
{
//最简单的情况,空树,创建新树
如果(T==null)
{
T=新节点(s,null,null);
}
//最简单的情况,发现
else if(s.compareTo(T.getData())==0)
{
System.out.println(“项目已存在”);
}
//s大于T,在右子树上插入
如果(s.compareTo(T.getData())>0),则为else
{
T.setRight(插入(s,T.getRight());
}
//s小于T,在左子树上插入
其他的
{
T.setLeft(插入(s,T.getLeft());
}
返回T;
}
公共作废删除(E-d)
{
}
}
还有我的节点类

public class Node<E> 
    {
       private E data;
    private Node<E> left;
    private Node<E> right;
    private Node<E> parent;

       public  Node(E d, Node<E> r, Node<E> l) 
    {
      data = d;

        left = l;
        right = r; 
       }
       public void setData(E d) 
    {
      data = d;
       }
    public E getData()
    {
        return data;
    }
       public Node<E> getRight() 
    {
      return right;
       }
    public void  setRight(Node<E> nd)
    {
        right = nd;
    }
       public Node<E> getLeft()
    {
        return left;
    }
    public void  setLeft(Node<E> nd)
    {
        left = nd;
    }
    public Node<E> getParent()
    {
        return parent;
    }
    public void  setParent(Node<E> nd)
    {
        parent = nd;
    }
}
公共类节点
{
私人电子数据;
私有节点左;
私有节点权;
私有节点父节点;
公共节点(ED、节点r、节点l)
{
数据=d;
左=l;
右=r;
}
公共无效设置数据(ED)
{
数据=d;
}
公共E getData()
{
返回数据;
}
公共节点getRight()
{
返还权;
}
公共无效设置权限(节点nd)
{
右=nd;
}
公共节点getLeft()
{
左转;
}
公共void setLeft(节点nd)
{
左=右;
}
公共节点getParent()
{
返回父母;
}
公共void setParent(节点nd)
{
父母=nd;
}
}

能否尝试
整数
而不是
整数

能否尝试
整数
而不是
整数

泛型类型只接受类(对象类型),而不接受原始数据类型
应该是

BST<Integer> myTree = new BST<Integer>();
BST myTree=new BST();

泛型类型只接受类(对象类型),而不接受原始数据类型
应该是

BST<Integer> myTree = new BST<Integer>();
BST myTree=new BST();

Java泛型仅适用于对象类型。因为,
int
是一种基本类型,所以不能使用它。相反,使用
BST

Java泛型仅用于对象类型。因为,
int
是一种基本类型,所以不能使用它。而是使用
BST

在Java中,不能将
int
之类的基元类型用作泛型类的参数。它必须是类类型,例如
Integer

在Java中,不能将
int
之类的基元类型用作泛型类的参数。它必须是类类型,例如
Integer

+1您的答案确实正确。如果你加上解释的话,那就太好了。int是基元类型,Integer是对象。在java中,泛型不能是基元类型,只能是对象。如果你加上解释的话,那就太好了。int是基元类型,Integer是对象。在java中,泛型不能是基元类型,只能是对象。