История изменений
Исправление dimgel, (текущая версия) :
А, вон ты в каком смысле. Эта дилемма очевидна, но я среагировал на термин: в терминологии java «type erasure» == «runtime type erasure», т.е. в рантайме JVM не знает типопараметры generic-классов; остаётся чистый LSP, за который по сути здесь ратует EugeneBas (так-то в теории ратует правильно, LSP в ООП – вещь ключевая).
А вот в .NET CLR, «runtime type erasure» нету, там рантайм знает типопараметры generic-классов, в т.ч. например коллекций, в результате никакими кастами ты не добавишь в массив воронов письменный стол. А в жаве – раз плюнуть.
Исходная версия dimgel, :
А, вон ты в каком смысле. Эта дилемма очевидна, но я среагировал на термин: в терминологии java «type erasure» == «runtime type erasure», т.е. в рантайме JVM не знает типопараметры generic-классов; остаётся чистый LSP, за который по сути здесь ратует EugeneBas (так-то в теории ратует правильно, LSP в ООП – вещь ключевая).
А вот в .NET CLR, «runtime type erasure» нету, там рантайм знает типопараметры generic-классов, в т.ч. например коллекций, в результате никакими кастами ты не добавишь в массив воронов письменный стол.