我有两个紧密联系的班级。为了便于说明,我们称一个为view,另一个为templatetemplate告诉view外观。我有一个基view和基template类,以及它们的许多配对子类。

因此,像这样:

基类

BaseTemplate BaseView

子类

TemplateA ViewA
TemplateB ViewB
TemplateC ViewC
TemplateD ViewD

每个view(甚至是基本的view)都具有对应类型的template作为变量。例如,如何将在BaseTemplate中声明的BaseView变量转换为在TemplateB中声明的ViewB?我希望能够在BaseTemplate中设置变量信息,而不必在所有模板子类中设置通用信息。

最佳答案

听起来您可以使用generics来解决此问题。例如:

public abstract class BaseView<T extends BaseTemplate> {

    private final T template;

    protected BaseView(T template) {
        this.template = template;
    }

    //common view methods operating using T etc.
}

public final class ViewA extends BaseView<TemplateA> {

    public ViewA() {
        super(new TemplateA()); //or wherever templates come from
    }

    // ViewA specific stuff
}

10-08 13:33