История изменений
Исправление korvin_, (текущая версия) :
Есть.
Расскажи каким образом.
Ты не понимаешь, что такое тип в принципе.
Смешно. Спасибо.
Чем отвечать выборочно и игнорировать неудобное
Отвечать на что? На чушь «Любой генерик мономорфен и стирает тип.». Сходи прочитай, что такое стирание типов, почему оно есть в Java, и почему его нет в C#, тогда будет на что отвечать.
каким образом здесь:
у тебя теряется тип возврата? Язык не смог вывести тип a + b, где типы a и b известны и не затёрты(по твоему утверждению)?
Во-первых, я же писал, что в Java дженерики реализованы через стирание типов. Во-вторых, компилятор и вывел тип a + b как long, поскольку ему известно, что 1) тип T является наследником Long и может быть приведён к нему, а 2) оператор + определён для long. Всё. Это НЕ пример отсутствия стирания типов. Это даже не пример стирания типов, хотя оно тут есть.
Исходная версия korvin_, :
Есть.
Расскажи каким образом.
Ты не понимаешь, что такое тип в принципе.
Смешно. Спасисбо.
Чем отвечать выборочно и игнорировать неудобное
Отвечать на что? На чушь «Любой генерик мономорфен и стирает тип.». Сходи прочитай, что такое стирание типов, почему оно есть в Java, и почему его нет в C#, тогда будет на что отвечать.
каким образом здесь:
у тебя теряется тип возврата? Язык не смог вывести тип a + b, где типы a и b известны и не затёрты(по твоему утверждению)?
Во-первых, я же писал, что в Java дженерики реализованы через стирание типов. Во-вторых, компилятор и вывел тип a + b как long, поскольку ему известно, что 1) тип T является наследником Long и может быть приведён к нему, а 2) оператор + определён для long. Всё. Это НЕ пример отсутствия стирания типов. Это даже не пример стирания типов, хотя оно тут есть.