假设有两个类:
Foo
(一个抽象类)Bar
(Foo的孩子)我希望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
// ...
}
}
显然,您可以将子类型作为泛型类型传递给父类:
abstract class Foo<T> {
// or Foo<T extends Foo<T>>
public abstract boolean testSth(T obj );
}
class Bar extends Foo<Bar> {
@Override
public boolean testSth( Bar obj ) { // I need the parameter to be of type Bar
// ...
}
}