Java Language Type Inference for Generic Instance Creation


Example

You can use

Map<String, List<String>> myMap = new HashMap<>();

instead of

Map<String, List<String>> myMap = new HashMap<String, List<String>>();

However, you can't use

List<String> list = new ArrayList<>();
list.add("A");

  // The following statement should fail since addAll expects
  // Collection<? extends String>

list.addAll(new ArrayList<>());

because it can't compile. Note that the diamond often works in method calls; however, it is suggested that you use the diamond primarily for variable declarations.