提问者:小点点

如何使用抽象类的子类型作为抽象方法参数的类型?


假设有两个类:

  • 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
        // ...
    }
}

共1个答案

匿名用户

显然,您可以将子类型作为泛型类型传递给父类:

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
       // ...
    }
 }