40

I have a bit of code:

class MyClass<RCM> 
  private List<RCM> allPreExistingConfigsForCodes() {
    if(this.allCodesForThisType.size() == 0)
       return new ArrayList<RCM>(0);

IntelliJ is telling me I should replace new ArrayList<RCM> with new ArrayList<> what would that mean?

George Mauer
  • 110,852
  • 124
  • 360
  • 595
  • related http://stackoverflow.com/questions/4166966/what-is-the-point-of-the-diamond-operator-in-java-7 – vikramvi Jul 22 '16 at 14:07

2 Answers2

50

From the Java Tutorials generics lesson:

In Java SE 7 and later, you can replace the type arguments required to invoke the constructor of a generic class with an empty set of type arguments (<>) as long as the compiler can determine, or infer, the type arguments from the context. This pair of angle brackets, <>, is informally called the diamond. For example, you can create an instance of Box<Integer> with the following statement:

Box<Integer> integerBox = new Box<>();

Pang
  • 9,073
  • 146
  • 84
  • 117
Paul Bellora
  • 53,024
  • 17
  • 128
  • 180
11

Are you using Java 7? If so, it is trying to take advantage of the new "diamond notation."

http://docs.oracle.com/javase/tutorial/java/generics/genTypeInference.html#type-inference-instantiation

Pang
  • 9,073
  • 146
  • 84
  • 117
Jeff Storey
  • 54,892
  • 71
  • 228
  • 402