というクラスがありServer、他の人がそれを書くことを許可したいとしましょうPlugins。単一のメソッドPluginを拡張Runnableおよび追加するインターフェースであるとします: void init(...). データを収集してサーバーに送信するのはプラグインの仕事です。しかし、サーバーにデータを送信するときが来たら、どのようにこれを行うのでしょうか? C および C++ から来て、関数ポインターの線に沿った考え方を探しています。Java標準クラスライブラリ以外の例は見つかりませんでしたが、Javaでは可能のようです。
メソッド参照をメソッドに渡しinit、Pluginプラグインがデータを送信したいときにいつでもメソッドを呼び出すにはどうすればよいですか? 今のところ、必要なサーバー メソッドは次のとおりvoid sendData(Integer data)です。
例えば:
// Inside Server
Plugin p = new PluginImplementation();
p.init(this::sendData);
// Plugin init
public void init(?? sendMethod) {
storedSendMethod = sendMethod;
// ...
}
// Plugin run
public void run() {
// ...
storedSendMethod(x) // Sends data to server
// ...
}