2014-09-12 25 views
0

當我試着下面的代碼,我得到一個錯誤:如何在類中創建Integer對象與通用整數

意外型 要求:類 發現:類型參數整數,其中Integer是一個類型變量

class myClass <Integer> 
{ 
    public void myMethod() 
    { 
     Integer q = new Integer(5); //Not allowed 
    }   
} 

然而,下面的代碼允許

class myClass  
{ 
    public void myMethod() 
    { 
     Integer q = new Integer(5); //Allowed 
    }   
} 

有人可以解釋爲什麼當我聲明類爲Integer時,我不允許在類中創建Integer對象嗎?

闕:它仍然是可能的,如何在這種情況下在類中創建Integer對象?

回答

1

您聲明Integer是泛型類型參數,它隱藏了類別Integer在範圍內的事實。你可以做一些事情來解決這個問題。

爲泛型類型參數選擇一個不同的名稱,例如: T

class myClass<T> 

或者,完全限定對類​​Integer的引用。

java.lang.Integer q = new java.lang.Integer(5); 
+0

它仍然顯示不兼容的類型:java.lang.Integer中不能轉換爲整數。 – user3437460 2014-09-12 21:41:22

1

我想你對可參數化類是什麼錯誤的想法。

要聲明一個參數化類:

class myClass <T> 
{ 
    T myGenericVariable; 
    Integer i; 
    public void myMethod() 
    { 
     this.i = new Integer(5); 

    }   
} 

如何使用它:

myClass mc = new myClass<String>();//String or whatever you want 
+0

如果我需要在myClass的方法中寫入,例如addElementToList(T元素),該怎麼辦。當我寫addElementToList(5)時,它給了我'必需的:T'的錯誤,發現:'整數'。你如何解決這個問題? – user3437460 2014-09-12 20:53:45

+0

你是怎麼聲明你的對象是myClass的? – ortis 2014-09-12 21:04:45

相關問題