[英]Which parameter type should I choose? A generic that extends a supertype or the supertype
[英]How can I accept a supertype of generic parameter on a single object?
是否可以僅接受類的泛型Type的超類型?
我正在尋找的是這樣的:
class <T extends Object> MyClass {
public <TS super T> void myMethod(TS someObjectSuperToTheClass) {
//do stuff
}
}
我真的不再需要它了(開始時可能並沒有那么有用),但是我很好奇這是否可能,為什么?
考慮一下在這種情況下的含義。
您想斷言TS
是T
或其任何超類。 但是由於TS
只是一個引用,所以實際的someObjectSuperToTheClass
參數可以是TS
或子類。
將這兩個部分放在一起,您的代碼完全等同於
public void myMethod(Object someObjectSuperToTheClass) { //do stuff }
自從在一起以來,您已經知道TS
可以沿類層次結構向上移動,而參數可以沿其所需層級向下移動。
您嘗試使用這種語法將參數限制為什么?
你不能! 只有通配符可以具有super
綁定。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.