2015-01-11 2 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() { }}); 

또는 동일한 방식으로

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

ActionListener.