Por que é errado fornecer parâmetro de tipo no construtor de uma classe genérica (Java)?

Estou apenas aprendendo sobre genéricos em Java a partir de um livro, onde ele fala sobre uma aulaGenericStack<E>&nbsp;implementado com umArrayList<E>.

Como para criar uma pilha de strings, você usa

GenericStack<String> = new GenericStack<String>()

ou

GenericStack<String> new GenericStack<>()

portanto, o construtor deGenericStack&nbsp;ser definido comopublic GenericStack<E>()oupublic GenericStack<>()? A resposta é não. Deve ser definido comopublic GenericStack().

Por que é isso? Obviamente, o construtor pode inferir facilmente o tipo da declaração de classe, mas, dada a verbosidade do Java, estou um pouco confuso por que o<E>&nbsp;ou simplesmente o<>&nbsp;o formalismo é completamente eliminado daqui.