Почему неправильно указывать параметр типа в конструкторе универсального класса (Java)?
Я только изучаю дженерики в Java из учебника, где говорится о классеGenericStack<E>
реализовано сArrayList<E>
.
Поскольку для создания стека строк, вы используете
GenericStack<String> = new GenericStack<String>()
или же
GenericStack<String> new GenericStack<>()
поэтому не должен конструкторGenericStack
определяться какpublic GenericStack<E>()
, или жеpublic GenericStack<>()
? Ответ - нет. Это должно быть определено какpublic GenericStack()
.
Почему это? Очевидно, конструктор может легко вывести тип из объявления класса, но, учитывая многословность Java, я немного озадачен, почему<E>
или просто<>
формализм полностью избавился здесь.