【发布时间】:2021-07-31 18:16:36
【问题描述】:
每当我创建一个超类的实例时,我希望它自动创建一个子类的实例。然后我可以从超类的实例访问子类。
这里我有一个超类名称“SortArticles”:
public class SortArticles {
private String title;
private String linkToFullArticles;
private FullArticle fullArticleObject;
public String getTitle() {
return this.title;
}
public FullArticle getFullArticleObject() {
return this.fullArticleObject;
}
}
这里我有一个子类名称“FullArticle”:
public class FullArticle extends SortArticles {
private List<Label> labelList;
}
我想这样打电话:
ArrayList<SortArticles> sortList = new ArrayList<>();
sortList.add(new SortArticles());
sortList.get(0).getFullArticleObject().getTitle;
有可能做到吗?我想用HashMap来链接sort和full,但是我需要创建2个arraylist,然后手动链接。
【问题讨论】:
-
永远不要那样做。这是非常糟糕的设计。
-
没有。您没有使用
this返回您的子类/子类 (FullArticle) 的实例,因为this关键字是对 current 实例的引用,在您的情况下,它正在成为超类 (SortArticles)。 -
那么解决办法是什么。如何在子类和超类之间建立联系?我只希望我添加到超类实例中的所有数据都可以通过子类实例获取
-
这个问题很可能是XY Problem 类型的问题。解决方案可能是从一开始就改进您的设计,而不是链接子类和超类。
-
你可以在getFullArticleObject那里使用抽象类吗?
标签: java polymorphism subclass superclass