LINUX.ORG.RU

История изменений

Исправление 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. Всё. Это НЕ пример отсутствия стирания типов. Это даже не пример стирания типов, хотя оно тут есть.