假设我有一个名为 的类Server,我想允许其他Plugins人为它编写。SayPlugin是一个扩展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
// ...
}