Jeśli nie korzystasz z Java Generics, uważam, że nie można mieć dwóch metod w tej samej klasie, które różnią się tylko typem zwracania.Czy można zrobić metodę przeciążania za pomocą generycznych i zmienić tylko ogólny typ podpisu metody?
Innymi słowy, to byłoby nielegalne:
public HappyEmotion foo(T emotion) {
// do something
}
public SadEmotion foo(T emotion) {
// do something else
}
jest taka sama prawda, gdy przeciążenia metody, które zwracają typ rodzajowy, które mogą realizować różne interfejsy, takie, jak gdyby dwie następujące metody były obecne w taka sama definicja klasy:
public <T extends Happy> T foo(T emotion) {
// do something
}
public <T extends Sad> T foo(T emotion) {
// do something else
}
Czy jest to nielegalne?
Czy próbowałeś go skompilować? Kompilator (zgodny) natychmiast poinformuje Cię, co jest legalne, a co nielegalne. Lepsze pytanie brzmi "dlaczego jest ... nielegalne?" jeśli nie rozumiesz powodów. –