안드로이드를 공부하고 있는 초보입니다.
모르는 문법이 있어서 질문을 합니다.
아래 소스는 정상적으로 기술되어 있으며, 실행도 잘 됩니다.
제가 궁금한 것은 '문법적 사항'입니다.
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() 과는 무슨 문법적 관계가 있는지 궁금합니다.
블럭 끝에 세미콜론으로 끝나는 문법을 처음 봐서 좀 어리둥절합니다.
클래스 파일로 따로 빼서 만들어도 되지만
간단한 코드라 저렇게 클래스 생성하면서 구현코드까지 같이 작성하기도 합니다.
저런식의 기법을 뭐라 부르긴 하는데 갑자기 생각이 잘 안나네요..