假设我有一个名为
如何传递方法引用给
例如:
Server
的类,我想让其他人为它编写插件
。假设Plugin
是一个接口,它扩展了Runnable
并添加了一个方法:void init(...)
。插件的工作是收集数据并将其发送到服务器。但是,当发送数据到服务器的时间到来时,它该如何做呢?从C和C++转过来,我希望能够思考一下函数指针的思路。虽然在Java中似乎也有可能实现,但我没有在Java标准类库之外找到过例子。如何传递方法引用给
init
方法,以便它可以被Plugin
存储,然后在Plugin想要发送数据时如何调用该方法?暂时假设所需的Server方法是: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
// ...
}
interface
,但是创建自己的函数式接口并没有问题。 - Holger