Java继承与抽象方法

Ale*_*lue 2 java generics polymorphism inheritance abstract-class

我有很多"形式"类,所有这些都扩展了Form.我有一个名为的抽象类FormService和扩展此类的特定表单服务.我想要做的是调用一个抽象方法populate(),它采用一种形式,从而通过继承为给定类型调用正确的服务.

所以我有类似的东西:

public abstract FormService {
    public abstract void populate(Form form);
}

public TestFormService extends FormService {
    public void populate(TestForm form) {
      //populate
    }
Run Code Online (Sandbox Code Playgroud)

哪种TestForm类型延伸Form.这是可能的,因为我似乎无法得到我想要的影响.

Pau*_*ora 9

你可以使用泛型:

public abstract FormService<F extends Form> {
    public abstract void populate(F form);
}

public TestFormService extends FormService<TestForm> {
    @Override
    public void populate(TestForm form) {
      //populate
    }
}
Run Code Online (Sandbox Code Playgroud)

请注意,@Override这里的使用只是一个好习惯,但与问题无关.