Javaインタフェース(コールバック、リスナー、傍観者)
Javaインタフェースを詳しく説明するブログ記事(https://www.charlezz.com/?p=768)があり、彼を勉強して書いた文章です.
インターフェース.インタフェース(interface)はjavaプログラミング言語でクラスが実装しなければならない動作を指定するための抽象データ型である.(プロトコルと似ています.)
出典:https://ko.wikipedia.org/wiki/%EC%9D%B8%ED%84%B0%ED%8E%98%EC%9D%B4%EC%8A%A4_(%EC%9E%90%EB%B0%94) 動作の他の言語では、関数は単独で存在します.ただしJavaにはクラスが存在する(関数Xが単独で存在する) クラスの関数をメソッドと呼びます. この方法のオブジェクト向けプログラミングにおける動作. sumの方法があり、aとbを入力してさらなる「行動」を行う.sumはインタフェース定義でいう「動作」を表す. インプリメンテーション Javaインタフェースの形式(計算機と呼ばれる) 計算機内部和と呼ばれる方法を定義するが、実施しない. インタフェースを実装する場合、クラスにキーワード「implements」を使用します.(以下のコード) インタフェースを実装するには、インタフェースで定義された方法を実装する必要があります. CalculatorImplによって作成されたオブジェクトは、CalculatorImplタイプにもCalculatorタイプにも属します. 抽象ある行為(行為)の具体的な実施(実現)を抽象(抽象)と呼ぶ. 秋史には具体的または実体はなく,行動(方法)定義のみである. 多形性(Polymorphics):抽象インタフェースの実装方法に応じて、メソッドに異なるコードまたは戻り値を作成できます.同じインタフェースを実現しても、「多形性」と呼ばれる異なる形態を有することができる. CalculatorPlus 3クラスという状況と計算機の作成を実現します. ですが先ほどとは異なり、戻り値に3を加算した場合です. 計算機Plus 3によって生成されたオブジェクトは、計算機タイプ和と呼ばれる方法を依然として有する.しかし、その戻り値などの実施形態は異なる.->マルチステート コールバックvsリスナーvs傍観者コールバック(Callback):イベントが発生したときに特定のメソッドを呼び出し、通知します.(1コール).一般関数呼び出し(call)は、呼び出し元によって呼び出される.しかし、コールバックは呼び出し元が呼び出される形式である. リスナー:特定のイベントを処理するインタフェース.イベントが発生するのを待つ、イベントが発生した場合、接続されたリスナー(n個の呼び出し) にイベントを転送する.傍観者: データまたは属性の変更を検出し、変更をサブスクライバに転送
cf)イベント:UIに適用されるユーザ反応部材(ex)をクリックし、テキストを入力し、ドラッグ
例イベントを転送するためのインタフェース を定義する.
Listenerという名前のMyEventListenerオブジェクトを作成する場合.クラスなしで直接インタフェースを介してオブジェクトを作成します.名前のないクラスなので、匿名クラスまたは無名クラスと呼ばれます.
通常のビュー.setOnClickListener(新しいOnClickListener(){...})は、このようにしてリスナーをビューにインストールします.代表的な無名レベルを使用する方法の1つです.
Listenerオブジェクト呼び出しonEvent()->無名クラスがイベントをうまく伝達できるかどうかを確認します.
ソース
https://www.charlezz.com/?p=768
インターフェース.
出典:https://ko.wikipedia.org/wiki/%EC%9D%B8%ED%84%B0%ED%8E%98%EC%9D%B4%EC%8A%A4_(%EC%9E%90%EB%B0%94)
public int sum(int a, int b) {
return a+b;
}
public interface Calculator {
int sum(int a , int b);
}
public class CalculatorImpl implements Calculator {
@Override
public int sum(int a, int b) {
return a+b;
}
}
Calculator calc = new CalculatorImpl();
public class CalculatorPlus3 implements Calculator {
@Override
public int sum(int a, int b) {
return a+b+3;
}
}
cf)イベント:UIに適用されるユーザ反応部材(ex)をクリックし、テキストを入力し、ドラッグ
例
public interface MyEventListener {
void onEvent();
}
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
listener.onEvent();
}
MyEventListener listener = new MyEventListener() {
@Override
public void onEvent() {
Toast.makeText(MainActivity.this, "onEvent",Toast.LENGTH_SHORT).show();
}
};
}
Listenerという名前のMyEventListenerオブジェクトを作成する場合.クラスなしで直接インタフェースを介してオブジェクトを作成します.名前のないクラスなので、匿名クラスまたは無名クラスと呼ばれます.
通常のビュー.setOnClickListener(新しいOnClickListener(){...})は、このようにしてリスナーをビューにインストールします.代表的な無名レベルを使用する方法の1つです.
Listenerオブジェクト呼び出しonEvent()->無名クラスがイベントをうまく伝達できるかどうかを確認します.
https://www.charlezz.com/?p=768
Reference
この問題について(Javaインタフェース(コールバック、リスナー、傍観者)), 我々は、より多くの情報をここで見つけました https://velog.io/@csy9604/자바의-인터페이스-콜백-리스너-옵저버テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol