假设我有一个名为 的类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
// ...
}