2013-10-10 65 views
0

我想創建一個對象的實例,該對象具有一個構造函數,該構造函數通過將int作爲jvalue數組的成員進行傳入來接受兩個整數。當我從構造函數中打印參數時,看起來只有第一個參數被正確傳遞,爲什麼會這樣呢?我的C和Java代碼如下。如何使用jvalue數組傳遞兩個int到構造函數?

C代碼

jclass theClass; 
jmethodID theMethod; 
theClass = (*env)->FindClass(env, "thepackage/TwoNumbers"); 
theMethod = (*env)->GetMethodID(env, theClass, "<init>", "(II)V"); 

jvalue args[2]; 
args[0].i=55; 
args[1].i=6; 

jobject theObj = (*env)->NewObject(env, theClass, theMethod, *args); 

Java代碼

package thepackage; 
public class TwoNumbers { 
    int a; 
    int b; 

    TwoNumbers(int first, int second) { 
     this.a=first; 
     this.b=second; 
     System.out.println("A is "+first+" and b is "+second); 
    } 
} 

回答

2

要調用它採用可變長度參數列表功能NewObject。要使用jvalue參數版本,您必須致電NewObjectA

jobject theObj=(*env)->NewObjectA(env,theClass,theMethod,*args); 

Documentation - NewObject

相關問題