현재 익명 클래스에 대해 제가 이해한 바는 인터페이스와 추상 클래스 메서드를 용이하고 유연하게 구현한다는 것입니다. 한 곳에서 해당 개체의 사용법만 구현해야 한다면 익명 내부 클래스 La~를 사용하는 것을 고려해 볼 수 있습니다. 그냥 말하면 어지러울 테니 작은 예를 들어 이야기해 봅시다.
인용문
다음 예는 Android에서 이벤트를 버튼에 바인딩하는 일반적인 방법입니다
Java 코드
public class Activity1 extends Activity { OnClickListener listener1 = null; Button button1; /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity1); listener1 = new OnClickListener() {//OnClickListener是一个接口 public void onClick(View v) {//onClick()方法是这个借口唯一的方法 Bundle bundle = new Bundle(); bundle.putString("store", "数据来自Activity1"); Intent mIntent = new Intent(); mIntent.putExtras(bundle); setResult(RESULT_OK, mIntent); finish(); } }; button1 = (Button) findViewById(R.id.button3); button1.setOnClickListener(listener1); ... ... ...(还有代码在下面~)
내부 클래스를 사용합니다. 왜냐하면 이 버튼을 누르면 전용 이벤트가 하나만 트리거되고 해당 이벤트가 발생하기 때문입니다. 다른 이벤트는 없으므로 내부 클래스를 사용하면 작업 구현과 실행을 동시에 완료할 수 있습니다! 자바스크립트의 익명 함수와 비슷해요~
다음은 몇 가지 작은 예입니다.
Java 코드
package com.eoeAndroid.activity; interface OnClickListener{ void onClick(String s); } public class testListener { public static void main(String... strings){ OnClickListener listener = new OnClickListener(){ @Override public void onClick(String s) { // TODO Auto-generated method stub System.out.println(s); } }; listener.onClick("OK!"); } }
이 코드는 이후 OnClickListener 인터페이스를 참조하는 것과 동일합니다. 예를 들어 다음 코드가 구현됩니다.
Java 코드
package com.eoeAndroid.activity; interface OnClickListener{ void onClick(String s); } class MyListener implements OnClickListener{ @Override public void onClick(String s) { // TODO Auto-generated method stub System.out.println(s); } } public class testListener { public static void main(String... strings){ MyListener listener = new MyListener(); listener.onClick("OK!"); } }
더 보기 java 익명 내부 클래스 관련 기사 PHP 중국어 사이트를 주목해주세요!