我有一個JNI方法來訪問返回Integer對象的java方法。我不想返回原始的int類型,因爲此代碼將被修改爲處理Generic對象。以下是我的。我無法獲得通過的Integer的值。在C++側的輸出是一樣的東西JNI如何訪問Java對象(Integer)
value = 0x4016f3d0
我怎樣才能得到Integer對象的實際價值,我通過在C++結束了嗎?
請幫忙。
感謝,
-H
GenericPeer.cpp
JNIEXPORT void JNICALL Java_GenericPeer_print (JNIEnv *jenv, jclass jcls, jobject data){
jclass peerCls = jenv->GetObjectClass(data);
jmethodID mGetValue = jenv->GetMethodID(peerCls, "getValue","()Ljava/lang/Integer;");
if(mGetValue == NULL){
return (-1);
}
jobject value = jenv->CallObjectMethod(data, mGetValue);
cout<<"value = "<<value<<endl;
}
GenericPeer.java
public class GenericPeer {
public static native void print(Data d);
static {
System.load("/home/usr/workspace/GenericJni/src/libGenericJni.so");
}
}
Data.j AVA
public class Data {
private Integer value;
pubilc Data(Integer v){
this.value = v;
}
public Integer getValue() { return value; }
public void setValue(Integer value) {
this.value = value;
}
}
Test.java(主類)
public class Test {
public static void main(String[] args){
Integer i = new Integer(1);
Data d = new Data(i);
GenericPeer.print(d);
}
}
喜,上面的代碼是不是爲我工作.. – RAJESH 2012-11-20 11:28:14
爲什麼'Ljava /朗/整數',而不是'Ijava /郎/整數;'? – 2016-06-09 18:12:20