我有两个紧密联系的班级。为了便于说明,我们称一个为view
,另一个为template
。 template
告诉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
}