Javaの匿名内部クラス

高洛峰
リリース: 2016-12-15 13:26:20
オリジナル
1281 人が閲覧しました

匿名クラスについての私の現在の理解は、インターフェイスと抽象クラスメソッドを容易かつ柔軟に実装する必要がある場合、オブジェクトの対応する使用法を 1 か所で実装するだけの場合は、匿名内部クラスの使用を検討できます。言うだけで確実にめまいがしてしまうので、小さな例で話しましょう:

Quote

次の例は、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);  
                ... ... ...(还有代码在下面~)
ログイン後にコピー

これは内部を使用しますクラス、理由 その理由は、このボタンが押されたときに、そのボタン専用のイベントが 1 つだけトリガーされ、他のイベントは発生しないため、内部クラスを使用すると、アクションの実装と実行を同時に完了できるためです。これは、JavaScript の匿名関数に少し似ています~
ここにいくつかの小さな例を示します:

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 中国語 Web サイトに注目してください。

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート