Можете ли вы сделать перегрузку метода генериками и изменить только тип сигнатуры метода?

Если Вы не используете Java Generics, я считаю, что невозможно иметь в одном классе два метода, которые различаются только по типу возврата.

Другими словами, это было бы незаконным :

public HappyEmotion foo(T emotion) {
    // do something
}   

public SadEmotion foo(T emotion) {
    // do something else
}   

То же самое верно при перегрузке методов, которые возвращают общий тип, который может реализовывать различные интерфейсы, например, если бы следующие два метода присутствовали в одном и том же определении класса:

public <T extends Happy> T foo(T emotion) {
    // do something
}   

public <T extends Sad> T foo(T emotion) {
    // do something else
}   

Это было бы незаконно?

9
задан Brendan Downes 29 August 2011 в 03:28
поделиться