2014-02-06 40 views
1
public class MyClass<Integer> extends AnotherOne<Integer> { 
    public MyClass(HashSet<Integer> ar) {  
     super(ar); 
    } 
} 

AnotherOne的是一種抽象的(通用)類,它有一個構造它獲取HashSet<T>作爲參數。然後它有另一種方法使用T類型的參數。HashSet的整數

一切都很好,但我必須使用Integer作爲參數來覆蓋該方法,並使用Integer而不是int似乎很奇怪。有沒有辦法使用原始的int?

+0

是沒有任何問題關於它? –

+0

@Leo如果值得告訴,請把它放在答案中? –

回答

3

不,泛型不能具有原始類型作爲泛型類型參數;它必須是參考類型,例如Integer

另外,您正在聲明一個通用類型參數Integer,它現在隱藏了實際的java.lang.Integer類。如果MyClass本身並不是意味着是通用的,然後從類中刪除:

public class MyClass extends AnotherOne<Integer> 

如果是,使用一個大寫字母爲通用類型參數:

public class MyClass<T> extends AnotherOne<T> 
4

不,你不能使用原始的int作爲HashSet。

這也適用於所有其他泛型集合類。

+0

確定但使用Integer安全嗎?它看起來很奇怪有一個方法獲取參數public void method(Integer i,Integer k) – user3281637

+0

它是安全的。它對我來說並不奇怪。或者,您可以將int傳遞給您的方法,但轉換爲整數並將整數添加到您的集合中。取決於您的確切用例和您的偏好。 –