2010-07-20 6 views
2

이 코드는 SectionedAdapter 객체를 인스턴스화하고 한 줄에 getHeaderView를 재정의합니까?자바 구문 질문

SectionedAdapter tagSectionedAdapter=new SectionedAdapter() { 
    protected View getHeaderView(String caption, int index, 
            View convertView, 
            ViewGroup parent) { 
     TextView result=(TextView)convertView; 

     if (convertView==null) { 
      result=(TextView)getLayoutInflater() 
      .inflate(R.layout.tag_listview_header, null); 
     } 

     result.setText(caption); 

     return(result); 
    } 
}; 

답변

2

클래스를 선언하고 메소드를 재정의하고 있습니다.

class MySectionedAdapter extends SectionedAdapter 
{ 
    @Override 
    protected View getHeaderView(...) 
    { 
     ... 
    } 
} 

을 그리고 그 클래스의 인스턴스 :

그것은이 같은 클래스를 선언 비슷

SectionedAdapter tagSectionedAdapter = new MySectionedAdapter();

은 익명의 내부 클래스의 - 아니 이름과 약간 다른 구문. 특정 상황에서 클래스의 특정 인스턴스 만 필요할 때 사용됩니다. 예를 들어, 비교 자 클래스는 종종이 방법으로 구현되고 정렬 함수로 전달됩니다.

Runnable의 경우처럼 실제로 구현할 수있는 클래스는 클래스가 아닌 인터페이스 일 수 있습니다.

3

네, 그렇습니다. 이를 anonymous inner class이라고합니다. 클래스가 정의되었지만 절대 이름이 지정되지 않았습니다. (SectionedAdapter은 실제로 익명 클래스의 상위 유형입니다.)