2014-10-08 29 views
3
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; 
} 

出於某種原因,我收到一個編譯錯誤,說我不能將我的輸入文件(E類型)轉換爲E類型。爲什麼?是不是因爲它在技術上不是E型?Java泛型錯誤:無法從E轉換爲E?

+4

insert()方法的''參數是不必要的,它隱藏了同名的類級參數。 – biziclop 2014-10-08 12:44:04

回答

9

Yout聲明瞭兩個類型參數E。沒有必要這樣做。類聲明PriorityQueue<E>中的類型參數就足夠了。

變化

public <E> int insert(E input) 

public int insert(E input) 
3

從您的插入方法刪除泛型參數,它會編譯。您不需要在方法級別是通用的,因爲您已在類的泛型參數中擁有您的隊列類型。

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; 
    } 
} 
相關問題