Стирание и перегрузка типов в Java: Почему это работает?

У меня есть следующий код:

public class Pair< T, U > {
    public T first;
    public U second;
}
public class Test {
    public int method( Pair< Integer, Integer > pair ) {
        return 0;
    }
    public double method( Pair< Double, Double > pair ) {
        return 1.0;
    }
}

На самом деле он компилируется и работает так, как и следовало ожидать. Но если возвращаемые типы сделаны одинаковыми, это не компилируется, с ожидаемым «конфликтом имен: метод (пара) и метод (пара) имеют одинаковое стирание»

. Учитывая, что возвращаемый тип не часть сигнатуры метода, как возможна эта перегрузка?

18
задан Kyle Dewey 3 April 2011 в 02:44
поделиться