What is the diamond operator in Java?

Troller picture Troller · May 3, 2013 · Viewed 33.2k times · Source

I have an arraylist with type patient_class and the arraylist type has been underlined in yellow and the IDE has mentioned "redundant type arguments in new expression (use diamond operator instead)".

My problem is: Should I use the diamond operator instead? Is it a must? Will I get any data loss or any other problem when storing records to the arraylist?

Here is my arraylist:

public class Register_newpatient extends javax.swing.JFrame {

    public Register_newpatient() {
        initComponents();
        groupbutton();
    }

    public void groupbutton()
    {
        ButtonGroup bg1=new ButtonGroup();

        bg1.add(rbopd);
        bg1.add(rbinpatientcare);
        bg1.add(rbboth);
    }

    all_error_handling checkerror = new all_error_handling();
    JFrame frame = new JFrame();
    static ArrayList<patient_class>patientlist = new ArrayList<patient_class>();

To be honest I have no idea what a diamond operator actually is.

Answer

Suresh Atta picture Suresh Atta · May 3, 2013

Don't worry. It's not an evil. It's feature of Java 7.

The purpose of the diamond operator is to simplify instantiation of generic classes.

For example, instead of

List<Map<Integer,Set<String>>> p = new ArrayList<Map<Integer,Set<String>>>();

with the diamond operator we can write only

List<Map<Integer,Set<String>>> p = new ArrayList<>();

If you want to know more about it and want to use it, please have a quick look here and decide whether it's useful to you or not.