George Mauer
George Mauer

Reputation: 122062

What does <> mean for java generics?

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?

Upvotes: 42

Views: 12298

Answers (2)

Jeff Storey
Jeff Storey

Reputation: 57192

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

Upvotes: 12

Paul Bellora
Paul Bellora

Reputation: 55213

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<>();

Upvotes: 53

Related Questions