比方說,有是2類:如何使用抽象類的子類型作爲抽象方法參數的類型?
Foo
(一抽象類)Bar
(美孚的孩子)
我想要一個抽象的參數的類型函數Foo
以匹配實現Foo
的子類的類型(這樣的類可以是Bar
)。
我想我可以使用受約束的泛型類型,但我不知道如何約束類型以匹配子類。
例子:
abstract class Foo {
public abstract boolean testSth([Type of the child] obj);
}
class Bar extends Foo {
@Override
public boolean testSth(Bar obj) { // I need the parameter to be of type Bar
// ...
}
}
設置通用的任何擴展'Foo'。 – Li357
那麼,你可以使用'抽象類Foo>'......這就是枚舉所做的事情。這不是一種理智的保證,但至少是一個開始。然後'酒吧'將延長'Foo '。 –
爲什麼不簡單地聲明你的方法沒有泛型類型,並使用'Foo'就像'testSmth(Foo obj)'?由於我們無法創建這樣的類的實例,因此您肯定無法傳遞抽象的'Foo'類的實例。我們只能創建非抽象類的實例,所以你可以確定它是'Bar'的實例,或者是在某個點'Foo'處擴展的其他非抽象類的實例。 – Pshemo