这些花括号做什么?

时间:2015-01-11 00:49:58

标签: java swing

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

抱歉初学者问题。我试着找一个关于它的教程,但找不到一个。

2 个答案:

答案 0 :(得分:3)

它会创建一个Anonymous Inner Class

基本上,您正在创建AbstractListModel的新实例,但要覆盖一些事情。由于你只是在这一个地方使用它,所以用自己的名字创建一个完整的单独的类声明是没有意义的 - 因此是“匿名”部分。

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

答案 1 :(得分:2)

这是匿名内部类的实现。

例如,您可以创建新的Runnable

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

ActionListener

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

以同样的方式。