【发布时间】:2020-04-06 05:07:11
【问题描述】:
我正在使用一个带有方法JPanel makeBarGraph(Type[] dataX, Type[] dataY); 的库,该方法已被重载。 “类型”可以是 String、Integer、LocalDateTime... 和许多其他类型。
我目前有一个数据类 Post,它有几个不同类型的字段。我创建了一个枚举,其中包含此数据类中名为“Content”的每个字段,并创建了一个名为 getContent() 的抽象函数,枚举中的每个项目都实现如下:
AUTHOR {
public String[] getContent(SocialMediaFramework f, Post[] p, String data) {
}
},
LIKES {
public Integer[] getContent(SocialMediaFramework f, Post[] p, String data) {
}
};
public abstract String[] getContent(SocialMediaFramework f, Post[] p);
public abstract Integer[] getContent(SocialMediaFramework f, Post[] p);
该函数应该返回一个特定类型的数组。这样,我可以在我的主类中编写以下函数:
public void displayBarGraph(Content type1, Content type2) {
frame.add(makeBarGraph(type1.getContent(), type2.getContent());
}
问题是,你不能通过区分它们的返回类型来重载 Java 中的方法,所以我的代码不会编译。有没有其他方法可以让我不必求助于一长串 if else 或 case 语句?
【问题讨论】:
-
请注意,您可能必须为学校作业返回一个数组,但 List 通常比数组更受欢迎,在这种情况下,
Map<Post, ?>对您的调用者来说会更方便,谁不会必须非常小心地对物品进行分类。
标签: java oop types overloading