如何爲Java接口創建JNI以便我可以從C++代碼中的接口調用函數?如何爲Java接口創建JNI?
具體來說,我有一個Java接口
public interface Foo {
public void Bar(int a);
}
我試圖創建JNI爲
JFoo.h:
class JFoo {
...
public:
void Bar(int a);
...
};
JFoo.c:
...
void JFoo::Bar(int a) {
//Not sure what to put here. If I don't have then I have issues because
"declaration of 'void JFoo::Bar(int)' outside of class is not
definition"
return;
}
...
所以從另一個C++文件,我可以做
JFoo foo123;
foo123 = ... //the Java object which implements the Foo interface is what actually passes in 'foo123'
foo123.bar(5); //This ideally executes the Java object's implementation of bar
我還試圖用virtual void
在JFoo而不是有一個抽象的C++類,但是,這並不工作,因爲你「不能聲明字段‘foo123’是抽象類型「。
如何爲Java接口創建JNI?
要聲明JNI方法,Java有一個特殊的'native'關鍵字 –
有喲你考慮過查閱文件嗎?而不是隻是猜測? – EJP
我知道'native'關鍵字,並且正在使用它(只是沒有在我的問題中包含完整的代碼),謝謝! 你能幫我指點一下正確的文檔嗎?我已經做了大量的搜索,但是如果JNI代表Java Native Interface,那麼專門創建一個Java接口的JNI是很困難的。 :(我成功創建了一個Java類的JNI,但你說得對,我只是猜測一個接口而不是一個類。 – yoloswag