Both pieces of code are equivalent and create ArrayList
s with a type (myObject
in your example):
List<myObject> obj = new ArrayList<myObject>();
List<myObject> obj = new ArrayList<>();
However the second example uses the diamond operator (<>
) introduced in Java 7. It adds type inference and reduces the verbosity in the assignments.
See the following quote from the documentation:
You can replace the type arguments required to invoke the constructor
of a generic class with an empty set of type parameters (<>
) as long
as the compiler can infer the type arguments from the context. This
pair of angle brackets is informally called the diamond.
For example, consider the following variable declaration:
Map<String, List<String>> myMap = new HashMap<String, List<String>>();
In Java SE 7, you can substitute the parameterized type of the
constructor with an empty set of type parameters (<>
):
Map<String, List<String>> myMap = new HashMap<>();