[英]Is it possible to have a Type Parameter that extends 2 other type parameters?
這是我的目標:我想要一個需要同時為兩種不同類型的參數。
這里的目標是僅使用泛型(無強制轉換或instanceof
)從單個對象中提取兩種不同的類型。
我的想法是有第三個類型參數來extends
其他兩個。
class DualType<A, B> {
A a;
B b;
<T extends A & B> DualType(T obj) {
a = obj;
b = obj;
}
}
這不起作用。 由於 java 不支持多重繼承,並且編譯器無法保證 B 不是另一個類,所以我們得到一個錯誤。
我的問題是:有沒有辦法定義一個類型參數來限制它只與接口一起使用? 我假設您可以使用implements
而不是extends
,但眾所周知,只有super
和extends
在類型參數聲明中有效。 有解決方法嗎? 還是根本不可能?
我在這里嘗試實現的目標不是出於某種實際目的,而是我只想知道在 Java 中是否可以實現這樣的事情?
有什么方法可以定義一個類型參數,將其限制為僅與接口一起使用?
編譯器無法知道A
和B
是接口還是類,因為這些類型變量只是占位符,實際類型將在運行時提供。
由於類型變量T
有多個界限<T extends A & B>
只有A
可以是一個類, B
應該是一個接口。 但是B
幾乎可以是任何東西,因此您的構造函數會導致編譯錯誤。
只有“super”和“extends”在類型參數聲明中有效
這是不正確的。 我們只能將super
與通配符一起使用,而不能與有界類型一起使用。 T super MyInterface
不會編譯。 對於有界類型參數,我們只能使用extends
。
並且不可能通過使用extends
讓編譯器知道B
是一個接口。 即使 bound 是一個接口B extends MyInterface
它並不意味着B
應該是一個接口。
沒有辦法實現你想要做的事情。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.