Имбирь
а вот "Type Erasure" в Java - это вообще уёбищное говно.
удалять из рантайма информацию о генериках "для совместимости со старыми версиями" - когда сам java-код херово совместим между версиями JRE - это, блядь, ёбаный пиздец и "наследственная болезнь".
имя генерика нельзя использовать.
например так:
public class Cl1{
public void fn(){
E elem = new E();// - НЕ КАТИТ, блядь. потому что в рантайме информации о E уже не будет. это, блядь, ёбаный стыд, блядь.
};
}
хуже того, поскольку type erasure - это удаление генериков из кода при компиляции, то код
List = new List;
вызывает только ВАРНИНГ! блядь, ВАРНИНГ!
это, блин, реально говно, ибо List и List - это реально РАЗНЫЕ типы.
но вот они получаются одинаковыми ради обратной совместимости, которая не очень есть.
в c++ и в c# этой проблемы нет
удалять из рантайма информацию о генериках "для совместимости со старыми версиями" - когда сам java-код херово совместим между версиями JRE - это, блядь, ёбаный пиздец и "наследственная болезнь".
имя генерика нельзя использовать.
например так:
public class Cl1{
public void fn(){
E elem = new E();// - НЕ КАТИТ, блядь. потому что в рантайме информации о E уже не будет. это, блядь, ёбаный стыд, блядь.
};
}
хуже того, поскольку type erasure - это удаление генериков из кода при компиляции, то код
List = new List;
вызывает только ВАРНИНГ! блядь, ВАРНИНГ!
это, блин, реально говно, ибо List и List - это реально РАЗНЫЕ типы.
но вот они получаются одинаковыми ради обратной совместимости, которая не очень есть.
в c++ и в c# этой проблемы нет
называется Template. с точки зрени использования - это тот же generic, только без type erasure.
да и этот type erasure - существует лишь для "обратной совместимости" (которая и так хромает весьма).
E на момент исполнения E elem = new E(); - уже не только определена (в том месте, где мы определяем использование), но и успешно забыта. во время type erasure.
а если ты, уважаемый, не видел в глаза других языков - то о чем тут можно говорить?
но это всё уже - через задницу.