Почему некоторые утверждают, что реализация дженериков в Java плохая? - PullRequest
109 голосов
/ 06 февраля 2009

Я иногда слышал, что с дженериками Java не понял это правильно. (ближайшая ссылка, здесь )

Простите мою неопытность, но что сделало бы их лучше?

Ответы [ 13 ]

3 голосов
/ 06 февраля 2009

Java не применяет Generics во время выполнения, только во время компиляции.

Это означает, что вы можете делать интересные вещи, такие как добавление неправильных типов в общие коллекции.

2 голосов
/ 01 декабря 2009

Если вы слушаете Java Posse # 279 - Интервью с Джо Дарси и Алексом Бакли , они говорят об этой проблеме. Это также ссылка на пост в блоге Нила Гафтера под названием Reified Generics для Java , в котором говорится:

Многие люди недовольны ограничения, вызванные способом дженерики реализованы на Java. В частности, они недовольны тем, что параметры универсального типа не Reified: они не доступны в во время выполнения. Дженерики реализованы используя стирание, в котором общий тип параметры просто удаляются при во время выполнения.

Этот пост в блоге ссылается на более старую запись, Puzzling Through Erasure: раздел ответов , в которой подчеркивается точка в совместимости миграции в требованиях.

Цель состояла в том, чтобы обеспечить назад совместимость как источника, так и код объекта, а также миграция совместимость.

2 голосов
/ 06 февраля 2009

Обобщения Java только во время компиляции и скомпилированы в неуниверсальный код. В C # фактический скомпилированный MSIL является универсальным. Это имеет огромное значение для производительности, потому что Java все еще преобразуется во время выполнения. Подробнее см. Здесь .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...