Javaでコールバックデータを受信する方法

Javaでコールバックデータを受信する方法

ソフトウェア開発において、コールバックは非常に一般的なパターンです。ある関数の実行が完了した後、別の関数を呼び出す仕組みとして利用されます。Javaでは、非同期処理、イベント処理、フレームワーク設計など、様々なシナリオでコールバックが使用されます。本記事では、Javaでコールバックデータを受信する方法を解説し、実用的な例を通じてその実装を紹介します。

コールバック関数の基本

コールバック関数は、ある処理の完了を通知するためのメカニズムです。呼び出し元がコールバック関数を定義し、それを別の関数(コールバックを受け取る側)に渡します。この仕組みにより、処理の依存関係を切り離すことができ、コードの柔軟性と拡張性が向上します。

Javaでは、この仕組みは主にインターフェースまたは関数型インターフェースを用いて実現されます。コールバックを受け取る側がインターフェースを定義し、呼び出し元がそのインターフェースを実装したクラスのインスタンスを渡す形になります。

実践的な例

ここでは、データ処理タスクが完了した後に結果を通知するシナリオを考えます。コールバックを利用してこの機能を実装してみましょう。

まず、結果を処理するためのハンドラインターフェースを定義します。名前を「ResultHandler」とし、処理されたデータを受け取るメソッドを用意します。

public interface ResultHandler {
    void handleResult(String processedData);
}

次に、データを処理するクラス「DataProcessor」を作成します。このクラスは、入力データを受け取り、処理が完了したらResultHandlerのインスタンスに結果を渡します。

public class DataProcessor {
    public void process(String inputData, ResultHandler handler) {
        // データ処理をシミュレート(例: 非同期処理の遅延)
        try {
            Thread.sleep(1000); // 1秒間待機
        } catch (InterruptedException e) {
            Thread.currentThread().interrupt();
        }

        // 処理されたデータを生成
        String processedData = "Processed: " + inputData;

        // 処理完了後、コールバックを呼び出す
        handler.handleResult(processedData);
    }
}

最後に、メインクラスでDataProcessorをインスタンス化し、コールバックの実装を渡して処理を開始します。ここではラムダ式を使用して簡潔に記述します。

public class Main {
    public static void main(String[] args) {
        DataProcessor processor = new DataProcessor();
        String initialInput = "Sample Data";

        processor.process(initialInput, receivedInfo -> {
            System.out.println("受信したデータ: " + receivedInfo);
        });
    }
}

このコードを実行すると、1秒ほどの遅延の後、コンソールに以下のメッセージが出力されます。

受信したデータ: Processed: Sample Data

まとめ

本記事では、Javaでコールバックデータを受信する方法を学びました。コールバックは、非同期処理やイベント駆動型のアプリケーションを構築する上で非常に強力なツールです。インターフェースを用いることで、処理の呼び出し元と呼び出し先を疎結合に保ち、コードの再利用性と保守性を高めることができます。実際の開発では、状況に応じて適切なコールバックの実装方法を選択し、より洗練されたアプリケーションを構築しましょう。

タグ: Java コールバック インターフェース ラムダ式

5月20日 05:03 投稿