Большинство ссылок, которые я видел, и завершение кода в моей среде IDE содержат определение общего типа как для типа переменных, так и для его реализации, например.
List<String> string = new ArrayList<String>();
Недавно я начал пропускать универсальный тип в реализации, например.
List<String> strings = new ArrayList();
при условии, что компилятор проверяет только тип на его неповторимость generics voodoo, и что реализация не должна заботиться об этом, поскольку его универсальные типы стираются при компиляции и не влияют на время выполнения вообще.
Я наивный? Есть ли причина для включения универсального типа в реализацию?