tak jediný důvod který jsem našel je že pokud
List<String> strings = new ArrayList();
strings.add("hello");
//přidělím při vytvoření nové kolekce
List<Integer> integers = new ArrayList(strings);
//tak dál už to je potenciálně nebezpečné ale pokud udělám
List<Integer> integers = new ArrayList<>(strings);
//tak mi to kompilátor nedovolí