这些花括号有什么作用?

What do these curly brackets do?

这是一段由 netbeans 生成的代码,我对这些括号在调用 AbstractListModel.

后做了什么感到困惑
    li_reminderslist.setModel(new javax.swing.AbstractListModel() {
        String[] strings = { };
        public int getSize() { return strings.length; }
        public Object getElementAt(int i) { return strings[i]; }
    });

抱歉初学者问题。我试图寻找有关它的教程,但找不到。

它创建一个 Anonymous Inner Class

基本上,您是在创建 AbstractListModel 的新实例,但要覆盖一些内容。由于您只打算在这个地方使用它,因此没有必要创建一个完整的单独的 class 声明并使用自己的名称——因此 "anonymous" 部分。

附带说明一下,因为 Java 8 Lambda Expressions 提供与 Anonymous Inner 类 类似的功能,但它们专门用于实例化 classes/interfaces一种 abstract/unimplemented 方法。

这是匿名内部 class 的实现。

例如,您可以创建新的 Runnable:

new Runnable() {public void run() { }});

ActionListener

new ActionListener(){public void actionPerformed(ActionEvent e}{}};

以同样的方式。