Java中的钻石操作符是什么?

19

我有一个类型为patient_class的ArrayList,这个ArrayList类型已被用黄色下划线标出,并且IDE提示“new表达式中冗余的类型参数(使用菱形操作符代替)”。

我的问题是:我应该使用菱形操作符吗?这是必须的吗?当将记录存储到ArrayList时,是否会发生数据丢失或任何其他问题?

这是我的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>();

说实话,我不知道钻石操作符究竟是什么。

2个回答

52

别担心,这不是什么邪恶的东西。这是Java 7的一个特性。

钻石操作符的目的是简化泛型类的实例化。

例如,使用钻石操作符:

List<Map<Integer,Set<String>>> p = new ArrayList<Map<Integer,Set<String>>>();
用钻石操作符我们可以仅编写

List<Map<Integer,Set<String>>> p = new ArrayList<>();
如果您想了解更多信息并使用它,请快速查看这里,然后决定它对您是否有用。

钻石语法为什么必须要求,而不是直接使用List<Map<Integer,Set<String>>> p = new ArrayList();?也许只是语言设计上的疏忽? - undefined

5

钻石操作符用于指定集合中要使用的数据类型。

例如,ArrayList<String> list = new ArrayList<String>()

在Java 7中,我们可以省略类型,如下所示:

ArrayList<String> list = new ArrayList<>()

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接