将继承的变量转换为子类

时间:2013-04-25 22:12:56

标签: java generics inheritance casting subclass

我有两个紧密结合的类集群。为了便于说明,我们可以调用一个view,另一个调用templatetemplate告诉view如何查看。我有一个基础view和基础template类以及它们的一些配对子类。

所以,就像这样:

基础课程

BaseTemplate< - >基本视角

子类

TemplateA< - > ViewA
TemplateB< - > ViewB
TemplateC< - > ViewC
TemplateD< - > ViewD

view s(即使是基数view)每个都有一个相应类型的template作为变量。 如何将BaseTemplate中声明的BaseView变量TemplateB转换为ViewB中声明的BaseTemplate 我希望能够在{{1}}中设置变量信息,而不必在所有模板子类中设置通用信息。

1 个答案:

答案 0 :(得分:1)

听起来您可以使用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
}