2014-10-31 202 views
0

擴展泛型類而不指定類型參數是否有效?我並不在乎類型參數,並且希望在我的類的層次結構下停止泛型。擴展泛型而不指定類型參數的非泛型類型

例如:如果存在類別A<T,U>其中TU是類型參數。

class B extends A { ... } 

另外,是否可以指定一個參數並跳過另一個?語法是什麼?以下行不通:

class C<U> extends A<?,U> { ... } 
+2

相關:[什麼是原始類型,爲什麼我們不應該使用它?](http://stackoverflow.com/questions/2770321/what-is-a-raw-type-and-why-shouldnt-我們使用它) – 2014-10-31 01:59:00

+0

感謝@SotiriosDelimanolis在我的情況下,層次結構變得非常複雜,我沒有足夠的時間從上到下刪除類型參數。因此試圖減少它在我的代碼中的使用。 – 2014-10-31 02:04:12

回答

0

未指定類型稱爲raw type。問題在於它可以讓你做不安全的東西。

下面是一個簡單的例子:

class A<T> { 
    T t; 
} 

class B extends A { 
} 

// somewhere 
A<String> a = new B(); 

則會出現警告的任務,但它是完全可編譯的Java。

另外,是否可以指定一個參數並跳過另一個?

不,不是真的。對於你的情況,我會建議使用Object進行參數化。 (如果參數聲明瞭一個上限喜歡<T extends SomeType>使用SOMETYPE而不是對象。)

class B extends A<Object, Object> { ... } 
class C<U> extends A<Object, U> { ... } 

這將正常的,不會讓你做任何意外瘋狂。

+0

我應該在問題中包含此代碼。但在我的情況下,我繼承了這個接口的接口:'SuperInterface ,K擴展ParentInterface>擴展SuperSuperInterface '我如何將接口從'SuperInterface'擴展到上面? – 2014-10-31 18:48:22

+0

@AsadIqbal看起來像遞歸泛型。我最好的猜測就像'class Sub extends SuperInterface '。但我不知道如何使用您的項目類。 – Radiodef 2014-10-31 18:57:31