После того, как я использовал «inFusion Hydrogen» для анализа моего проекта, довольно легко понять, что myQuestionFun() вызывает зависть.Как исправить зависть от проекта на основе Java?
public abstract class Father{
protected DataModel dataModel;
public abstract void myQuestionFun();
}
public class Child extends Father{
public DataModel<TableInfo> tableList = new DataModel<TableInfo>;
public DataModel<TableInfo> getTableList(){
return this.tableList;
}
@Override
public DataModel<Report> getDataModel(){
return this.dataModel;
}
@Override
public void myQuestionFun(){
List<TableInfo> tabList = new ArrayList<TableInfo>();
for (int i=0; dataModel.getDataList().size(); i++) {
Report rep = (Report)dataModel.getDataList.get(i);
TableInfo tabInfo = new TableInfo();
tabInfo.setId(rep.getId());
tabInfo.setName(rep.getName());
tabList.add(tabInfo);
}
tableList.setPage(dataModel.getPage());
tableList.setSorter(dataModel.getSorter());
}
}
Вопрос в том, что это лучший способ исправить это? Поскольку myQuestionFun() является функцией абстрактного метода родительского класса, я не могу его переместить.
Благодарит Вас за ответ. – sept08
Я принимаю ваш совет о перемещении метода getDateModel() отцу. но я не знаю, как извлечь метод от ребенка к отцу. многие подклассы распространяются на класс Отца в моем проекте, реализация метода myQuestionFun() для каждого подкласса отличается. – sept08
Я предложил переместить getDataModel() отцу, если он всегда возвращает this.dataModel. Если это не так, то либо оставите его там, либо передайте родовую реализацию Отцу и переопределите его только тем детям, где это необходимо. –