Generics типобезопасны?

Если мы берем гомогенные джерики, т.е. которые используются в Java, являются ли они типобезопасными?

Если они все приводятся к одному общему типу при стирании, разве не должно быть так, что, например, в List<String> можно добавить Integer?


Ответы (1 шт):

Автор решения: Sergey Gornostaev

Стирание происходит после компиляции, поэтому на уровне исходного кода добавить Integer в List<String> нельзя, компилятор не позволит. Можно на уровне байткода, но если вы занимаетесь грязными хаками в рантайме, то вы сам себе злой буратино. Обобщённые типы - это помощь программисту от случайных ошибок, а не защита от злонамеренных действий.

→ Ссылка