擴展泛型類而不指定類型參數是否有效?我並不在乎類型參數,並且希望在我的類的層次結構下停止泛型。擴展泛型而不指定類型參數的非泛型類型
例如:如果存在類別A<T,U>
其中T
和U
是類型參數。
class B extends A { ... }
另外,是否可以指定一個參數並跳過另一個?語法是什麼?以下行不通:
class C<U> extends A<?,U> { ... }
擴展泛型類而不指定類型參數是否有效?我並不在乎類型參數,並且希望在我的類的層次結構下停止泛型。擴展泛型而不指定類型參數的非泛型類型
例如:如果存在類別A<T,U>
其中T
和U
是類型參數。
class B extends A { ... }
另外,是否可以指定一個參數並跳過另一個?語法是什麼?以下行不通:
class C<U> extends A<?,U> { ... }
未指定類型稱爲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> { ... }
這將正常的,不會讓你做任何意外瘋狂。
我應該在問題中包含此代碼。但在我的情況下,我繼承了這個接口的接口:'SuperInterface
@AsadIqbal看起來像遞歸泛型。我最好的猜測就像'class Sub extends SuperInterface '。但我不知道如何使用您的項目類。 – Radiodef 2014-10-31 18:57:31
相關:[什麼是原始類型,爲什麼我們不應該使用它?](http://stackoverflow.com/questions/2770321/what-is-a-raw-type-and-why-shouldnt-我們使用它) – 2014-10-31 01:59:00
感謝@SotiriosDelimanolis在我的情況下,層次結構變得非常複雜,我沒有足夠的時間從上到下刪除類型參數。因此試圖減少它在我的代碼中的使用。 – 2014-10-31 02:04:12