繁体   English   中英

将继承的变量强制转换为子类

[英]Cast inherited variable to subclass

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

所以,像这样:

基类

BaseTemplate <-> BaseView

子类

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

每个view (甚至是基本view )都有一个对应类型的template作为变量。 我怎样才能投,例如,可变BaseTemplate ,在宣布BaseView ,以TemplateB ,在宣布ViewB 我希望能够在BaseTemplate设置变量信息,而不必在所有模板子类中设置通用信息。

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

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
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM