最近我需要用Java包装一个C/C++库,其中有一个方法接受一个函数作为参数。这基本上是观察者(也称为监听器)模式:
void setLogFunction(const std::function<void(std::string&, std::string&)> &callback)
{
_callback = callback;
}
在Java方面,您无法传递函数,但可以传递一个具有log()方法的对象。
interface Observer {
public void log(String prefix, String message);
}
class MyLibrary {
public MyLibrary() {
initCpp();
}
public native void initCpp();
...
public native void setObserver(Observer observer);
}
在JNI中如何实现setObserver()?