2009-12-13 110 views
3

我編碼在NetBeans是這樣的:當在內部類類型上使用instanceof時,「非法泛型類型的instanceof」?

public class Grafo<V, E> 
{ 
    class Par 
    { 
     int a, b; 
     Par(int a, int b) { 
      this.a = a; 
      this.b = b; 
     } 

     @Override 
     public boolean equals(Object ob) 
     { 
      if(ob instanceof Par) { 
       Par p = (Par)ob; 
       return this.a==p.a && this.b==p.b; 
      } 

      return false; 
     } 
    } 

    //stuff... 
} //end of class Grafo 

的錯誤是在該方法中()內從類「帕」等於。

NetBeans說錯誤是「非法泛型類型instanceof」。該錯誤在下面的行中。

  if(ob instanceof Par) { 

錯誤的原因是什麼?

回答

6

嘗試ob instanceof Grafo<?,?>.Par

我認爲,編譯器認爲ob instanceof Par涉及對泛型類型參數運行時檢查;即它相當於ob instanceof Grafo<V,E>.Par。但instanceof測試無法檢查泛型類型參數。

3
@SuppressWarnings("unchecked") 
@Override 
public boolean equals(Object ob) 
{ 
    if(ob instanceof Grafo.Par) { 
     Par p = (Par)ob; 
     return this.a==p.a && this.b==p.b; 
    } 

    return false; 
} 

或定義你的內部類static