2015-01-11 100 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}{}}; 
以同樣的方式

相關問題