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

时间:2016-10-16 15:49:37

标签: java types abstract-class

假设有两个类:

  • 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 个答案:

答案 0 :(得分: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
       // ...
    }
 }