What is the diamond operator in Java? [duplicate]

2019-01-03 07:08发布

This question already has an answer here:

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.

2条回答
我想做一个坏孩纸
2楼-- · 2019-01-03 07:19

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.

查看更多
可以哭但决不认输i
3楼-- · 2019-01-03 07:33

The diamond operator is used to specify what type of data you are going to use in the Collections.

For example, ArrayList<String> list = new ArrayList<String>().

In Java 7, we can eliminate the type like:

ArrayList<String> list = new ArrayList<>()
查看更多
登录 后发表回答