Как я знаю, одной из основных целей дженериков в Java является обеспечение безопасности типа компиляции. Если он скомпилирован, код будет работать без проблем.
Тогда почему скомпилирован следующий код?
public static void main(String[] args) {
String s = getList();
}
private static <T extends List> T getList() {
return (T)new ArrayList();
}
Он компилируется отлично. Где моя безопасная для текста компиляция? Метод getList()
не имеет ничего общего с классом String
.