这些花括号有什么作用?
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}{}};
以同样的方式。
这是一段由 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}{}};
以同样的方式。