ホームページ  >  記事  >  Java  >  インターフェース・コールバック・メソッドのJava実装の分析例

インターフェース・コールバック・メソッドのJava実装の分析例

黄舟
黄舟オリジナル
2017-09-15 10:11:352375ブラウズ

この記事の主な内容は、実際のコードを通じて Java プログラミングにおけるインターフェイス コールバックの一般的な使用法を示すことです。これを必要とする友人は、それについて学ぶことができます。

インターフェイス コールバックの意味: クラスを作成できます。特定のインターフェイスを使用するインターフェイスで宣言されたインターフェイス変数にオブジェクトの参照が代入され、そのインターフェイス変数からクラスで実装されたインターフェイスのメソッドを呼び出すことができます。実際、インターフェイス変数がクラスによって実装されたインターフェイス内のメソッドを呼び出すとき、対応するオブジェクトにそのインターフェイスのメソッドを呼び出すように通知します。このプロセスは、オブジェクト関数のインターフェイス コールバックと呼ばれます。

Java インターフェース コールバックの一般的な使用法: インターフェースの実装は、実際には抽象クラスの継承と似ていますが、継承はクラス レベルで動作するのに対し、インターフェースはメソッドと定数コレクションのレベルで動作する点が異なります。インターフェースは抽象クラスよりも抽象的で簡潔です。 。インターフェイスの実装は、特定のメソッドといくつかの定数を継承すると考えることができます。インターフェイスの特定の規則については、ここでは詳しく説明しません。

なぜインターフェースと抽象クラスを使用するのでしょうか?これは、多くの観点から、開閉の原則などのオブジェクト指向の設計思想と一致しているためです。

実際の開発の観点から見ると、Java は多重継承をサポートしていません。これを補うために、クラスは複数のインターフェイスを実装できます。

インターフェイスの主な機能は、コールバックを実装することです。コールバックは同期コールバックと非同期コールバックに分けられます。違いは、コールバックに時間のかかる操作がある場合、非同期コールバックはマルチスレッド テクノロジを使用することです。使用されること。

以下はすべて、例として非同期コールバックを使用しています。以下では Java の記述を例として使用しますが、Android についても同様です。

1. 一般的な使用法

新しいエントリクラスMainを作成し、新しいインターフェイスInterfaceExampleを作成します


public class Main implements InterfaceExample{
  public static void main(String[] args) {
    System.out.println("------接口使用测试--------");
    InterfaceTest test = new InterfaceTest();
    //调用InterfaceTest的handleThings方法,并传递Main的实例
    test.handleThings(new Main());
    System.out.println("------异步回调测试--------");
  }
  @Override  //重写接口方法
  public void sendMessage(String string) {
    System.out.println("接口回调成功,利用 " + string + " 做一些事");
  }
}
 
//接口也可以写在一个独立的.java文件里
interface InterfaceExample {
  void sendMessage(String string);
}

以下はコールバックを開始する新しいクラスInterfaceTestを作成します


public class InterfaceTest {
  //注意这里Main实例向上转型,接口变量引用了Main实例
  public void handleThings(InterfaceExample example) {
    new Thread(new Runnable() {
      @Override
      public void run() {
        System.out.println("-----做一些事------");
        try {
          Thread.sleep(3000);
        } catch (InterruptedException e) {
          e.printStackTrace();
        }
        //回调接口方法
        example.sendMessage("接口传的参数");
      }
    }).start();
  }
}

最終実行出力:


------接口使用测试--------
------异步回调测试--------
-----做一些事------
接口回调成功,利用 接口传的参数 做一些事

MainでhandleThingsを呼び出すと非同期処理も可能です。

2. 匿名の内部クラスを結合してインターフェースのコールバックを実装します

2 番目のメソッドは、最初のメソッドに基づいて Main クラスを変更するだけです


public class Main {
  public static void main(String[] args) {
    System.out.println("------接口使用测试--------");
    InterfaceTest test = new InterfaceTest();
    //调用InterfaceTest的handleThings方法,并使用实现了InterfaceExample接口的匿名内部类
    //在该匿名内部类中重写接口方法
    test.handleThings(new InterfaceExample() {
      @Override  //重写接口方法
      public void sendMessage(String string) {
        System.out.println("接口回调成功,利用 " + string + " 做一些事");
      }
    });
    System.out.println("------异步回调测试--------");
  }
}
interface InterfaceExample {
  void sendMessage(String string);
}

ご覧のとおり、匿名の内部クラス メソッドが使用されていますコードを簡略化してプログラム構造を明確にすることができます。したがって、この使用法は非常に一般的です。たとえば、Android システムによって提供されるビューのクリック イベントでは、この形式のコールバックが使用されます。

出力は同じです:


------接口使用测试--------
------异步回调测试--------
-----做一些事------
接口回调成功,利用 接口传的参数 做一些事。

以上がインターフェース・コールバック・メソッドのJava実装の分析例の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。