안드로이드를 공부하고 있는 초보입니다.

모르는 문법이 있어서 질문을 합니다.

아래 소스는 정상적으로 기술되어 있으며, 실행도 잘 됩니다.

제가 궁금한 것은 '문법적 사항'입니다.


public class myToast extends Activity {

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.mytoast);
       
        findViewById(R.id.msg1).setOnClickListener(myCKListener);
        findViewById(R.id.msg2).setOnClickListener(myCKListener);
    }

    // 아래 문장이 이해가 안감 
    Button.OnClickListener myCKListener = new Button.OnClickListener(){
     public void onClick(View v){
      switch(v.getId()){
      
      case R.id.msg1:
       Toast.makeText(myToast.this, "abc", Toast.LENGTH_SHORT).show();
       break;
      case R.id.msg2:
       Toast.makeText(myToast.this, "def", Toast.LENGTH_LONG).show();
       break; 
      }
     }
    }; // <- 이 부분
}


위 문장에서 myCKListener를 생성하기 위해 = new Button.OnClickListener() 을 호출하는 것으로 보입니다.
그런데 이어지는 문장에서 중괄호를 열고, 시작됩니다.
그 다음 중괄호 안에 내용은 그렇다치고, 이번엔 중괄호를 닫고, 호출문의 끝에서나 붙는 세미콜론이 이어집니다.

여기서 중괄호 블럭 안에 있는 문장과 new Button.OnClickListener() 과는 무슨 문법적 관계가 있는지 궁금합니다.

블럭 끝에 세미콜론으로 끝나는 문법을 처음 봐서 좀 어리둥절합니다.