String é atribuída a uma Lista sem um erro de compilação [duplicado]

Esta pergunta já tem uma resposta aqui:

Por que esse método genérico com um limite pode retornar qualquer tipo? 1 resposta

Como eu sei, um dos principais objetivos dos genéricos em Java é fornecer segurança do tipo em tempo de compilação. Se for compilado, o código será executado sem problemas.

Por que o código a seguir está sendo compilado?

public static void main(String[] args) {
    String s = getList();
}

private static <T extends List> T getList() {
    return (T)new ArrayList();
}

Compila bem. Onde está minha compilação com segurança de tipo? ogetList() O método não tem nada em comum com oString classe.

questionAnswers(1)

yourAnswerToTheQuestion