Program to demonstrate Java 7 new feature : Using the diamond operator for type inference
package com.hubberspot.java7;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
public class DiamondOperatorTypeInference {
public static void main(String[] args) {
// Scenario 1 -
// Code prior Java 7
List< String > list1 = new ArrayList< String >();
// Code after coming of Java 7
// we can now provide only the diamond operator
// the compiler comes to know that list2 type
// is a String
List< String > list2 = new ArrayList< >();
// Scenario 2 -
// Code prior Java 7
// the list3 below code is a raw type code for Java 6 and
// earlier versions.
// The compiler generates warning as : ArrayList is a raw type.
// References to generic type ArrayList< E > should be parameterized
List< String > list3 = new ArrayList();
// Code after coming of Java 7
// No warnings generated by the compiler.
List< String > list4 = new ArrayList< >();
// Scenario 3 -
// Code prior Java 7
// the list5 below code is a raw type code for Java 6 and
// earlier versions.
// The compiler generates warning as : ArrayList is a raw type.
// References to generic type ArrayList< E > should be parameterized
// to remove this warning we use @SuppressedWarning annotation
// as :
@SuppressWarnings(value={ "rawtypes", "unchecked" })
List< String > list5 = new ArrayList();
// Code after coming of Java 7
// No warnings generated by the compiler.
// No need of placing @SuppressWarnings({"rawtypes","unchecked"})
List< String > list6 = new ArrayList< >();
// Scenario 4 -
// Code prior Java 7
// the list7 below code is a complex type code
List< Map< String, String > > list7 = new ArrayList();
// Code after coming of Java 7
// No warnings generated by the compiler.
List< Map< String, String > > list8 = new ArrayList< >();
}
}