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>
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
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>
ou simplesmente o<>
o formalismo é completamente eliminado daqui.