在我的孩子课上,我得到了类似的东西:
protected String[] columns = {"column1", "column2"};
在我的父类中,我有一个方法可以将它们存储在HashMap中。
public HashMap<Integer, String> getColumns() {
HashMap<Integer, String> columnsMap = new HashMap<>();
for (int i = 0; i < this.columns.length; i++) {
columnsMap.put(i + 1, this.columns[i]);
}
return columnsMap;
}
但是看起来,我不能简单地在我的子类上使用String[] columns
属性。
我怎么能这样做?
答案 0 :(得分:0)
假设您尝试从父类中的方法访问子类中定义的String[]
,您可以通过getColumnNames()
之类的方法访问它。子类需要覆盖此方法并返回定义为变量的String[]
。
请注意,与方法重写不同,在子类中声明另一个具有相同名称的字段并不等于覆盖。超类变量值保持不变,子类字段变为另一个字段。字段永远不会被覆盖只有方法被覆盖。
答案 1 :(得分:0)
创建一个抽象方法,该方法将检索包含列名的String数组,然后在子类中定义它。
在父母:
protected abstract String[] getColumnNames();
public HashMap<Integer, String> getColumns() {
HashMap<Integer, String> columnsMap = new HashMap<>();
String[] columns = this.getColumnNames();
for (int i = 0; i < columns.length; i++) {
columnsMap.put(i + 1, columns[i]);
}
return columnsMap;
}
在孩子身上:
protected String getColumnNames()
{
return new String[] {"column1", "column2"};
}