Я работаю с библиотекой с методом JPanel makeBarGraph(Type[] dataX, Type[] dataY);
, который был перегружен. «Тип» может быть String, Integer, LocalDateTime ... и многими другими типами.
В настоящее время у меня есть класс данных Post, который имеет несколько полей нескольких разных типов. Я сделал enum, который содержит каждое поле в этом классе данных с именем «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);
Предполагается, что функция вернуть массив указанного c типа. Таким образом, я могу написать следующую функцию в моем основном классе:
public void displayBarGraph(Content type1, Content type2) {
frame.add(makeBarGraph(type1.getContent(), type2.getContent());
}
Проблема в том, что вы не можете перегружать методы в Java, дифференцируя их тип возвращаемого значения, поэтому мой код не будет компилироваться , Есть ли другой способ сделать это, чтобы мне не пришлось прибегать к длинному списку операторов if if или case?