Java泛型错误:无法从E转换为E? 公共类优先队列{ 私有E[]数组; 私有整数大小; 私人内部阵线; 私人int back; 私有int numOfElements=0; 私有静态int EMPTY=0; 公共整数插入(E输入) { 如果(numOfElements+1

Java泛型错误:无法从E转换为E? 公共类优先队列{ 私有E[]数组; 私有整数大小; 私人内部阵线; 私人int back; 私有int numOfElements=0; 私有静态int EMPTY=0; 公共整数插入(E输入) { 如果(numOfElements+1,java,generics,Java,Generics,Yout正在声明两个具有相同名称的类型参数E。则无需这样做。类声明PriorityQueue中的类型参数就足够了 改变 public class PriorityQueue<E> { private E[] array; private int size; private int front; private int back; private int numOfElements = 0; private static int EMPTY = 0; public <E

Yout正在声明两个具有相同名称的类型参数
E
。则无需这样做。类声明
PriorityQueue
中的类型参数就足够了

改变

public class PriorityQueue<E> {


private E[] array;
private int size;
private int front;
private int back;
private int numOfElements = 0;
private static int EMPTY = 0;



public <E> int insert(E input)
{
    if (numOfElements + 1 <= size)
    {
        array[back] =  input;
        back++;
        numOfElements++;

    }


    return 0;
}

从insert方法中删除泛型参数,它将进行编译。您不需要在方法级别为泛型,因为您在类的泛型参数中已经具有队列的类型

public int insert(E input)
公共类优先队列{
私有E[]数组;
私有整数大小;
私人内部阵线;
私人int back;
私有int numOfElements=0;
私有静态int EMPTY=0;
公共整数插入(E输入){
如果(numOfElements+1),
insert()
方法的
参数是不必要的,它会隐藏同名的类级参数。
public int insert(E input)
public class PriorityQueue<E> {


    private E[] array;
    private int size;
    private int front;
    private int back;
    private int numOfElements = 0;
    private static int EMPTY = 0;


    public int insert(E input) {
        if (numOfElements + 1 <= size) {
            array[back] = input;
            back++;
            numOfElements++;

        }
        return 0;
    }
}