2015-01-11 61 views
4

这是一段由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]; } 
    }); 

对不起,对初学者问题。我试图寻找一个教程,但找不到一个。

回答

3

它创建一个Anonymous Inner Class

基本上,您正在创建AbstractListModel的新实例,但覆盖了一些内容。既然你只打算在这个地方使用它,用它自己的名字创建一个完整的单独的类声明是没有意义的 - 因此是“匿名”的一部分。

在附注中,由于Java 8 Lambda Expressions提供了与匿名内部类类似的功能,但它们专门用于仅使用一个抽象/未实现方法实例化类/接口。

+1

OP可能也想要注意(和调查)匿名数组,它们的工作原理基本相同。对于“当场”创建数组非常有用,当一个额外的声明太“罗嗦”时。 –

+0

@ tgm1024谢谢!我正在寻找这样的东西! – alexanderd5398

+0

@ alexanderd5398,很高兴能帮到你! –

2

这是匿名内部类的实现。

例如您可以创建新的Runnable

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

ActionListener

new ActionListener(){public void actionPerformed(ActionEvent e}{}}; 
以同样的方式

相关问题