[英]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.