Java Genericsを使用していない場合、戻り値の型だけが異なる2つのメソッドを同じクラスに持つことはできないと思います。ジェネリックでメソッドオーバーロードを行い、メソッドシグネチャのジェネリック型のみを変更できますか?
言い換えれば、これは違法あろう:例えば以下の2つの方法が存在したかのように異なるインタフェースを実装することができる一般的なタイプを返すメソッドをオーバーロードするとき
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
}
これは違法でしょうか?
コンパイルしようとしましたか?コンパイラは合法的で何が違法であるかを速やかにあなたに伝えます。より良い質問は「なぜ...違法ですか?」となります。あなたが理由を理解していない場合。 –