#include "ObjectTest.h"
#include <iostream>
using namespace std;
JNIEXPORT void JNICALL Java_ObjectTest_show
(JNIEnv * env, jobject obj, jintArray as){
cout<<"Java_ObjectTest_show"<<endl;
jfieldID as_field=env->GetFieldID(env->GetObjectClass(obj),"as","[I");
jintArray asi= (jintArray) env->GetObjectField(obj,as_field);
jsize length=env->GetArrayLength(asi);
/* jint * in_arr=env->GetIntArrayElements(asi,NULL);
for (int i=0;i<length;i++)
{
cout<<in_arr[i]<<endl;
in_arr[i]++;
}
env->ReleaseIntArrayElements(asi,in_arr,0);*/
jint * buf=new jint[length];
env->SetIntArrayRegion(asi,0,length,buf);
}
#include <iostream>
#include <jni.h>
#include <test.h>
using namespace std;
JNIEXPORT void JNICALL Java_test_get__
(JNIEnv * env, jobject obj){
cout<<"Java_test_get"<<endl;
jclass class_obj=env->GetObjectClass(obj);
jfieldID field_id= env->GetFieldID(class_obj,"t","I");
cout<<env->GetIntField(obj,field_id)<<endl;
env->SetIntField(obj,field_id,100);
}
JNIEXPORT jint JNICALL Java_test_get__I
(JNIEnv * env, jobject obj, jint i){
jclass class_obj= env->GetObjectClass(obj);
jmethodID method_obj= env->GetMethodID(class_obj,"get","(II)V");
env->CallVoidMethod(obj,method_obj,10,10);
jmethodID method_obj1= env->GetMethodID(class_obj,"setChar","(C)V");
env->CallVoidMethod(obj,method_obj1,'s');
//env->GetObjectField()
/* jvalue value[3];
env->calln*/
return 0;
}
#include "TestString.h"
#include <iostream>
#include <string>
#include <algorithm>
using namespace std;
void setStr(JNIEnv * env, jobject obj, jstring jstr)
{
jclass obj_class=env->GetObjectClass(obj);
jfieldID obj_field_str= env->GetFieldID(obj_class,"str","Ljava/lang/String;");
env->SetObjectField(obj,obj_field_str,jstr);
}
JNIEXPORT void JNICALL Java_TestString_set
(JNIEnv * env, jobject obj, jstring str){
cout<<"Java_TestString_set"<<endl;
//jstring js1=env->NewStringUTF("fdafdf");
//将输入的字符反转
/* const jchar * char1=env->GetStringChars(str,NULL);
wstring wstr((const wchar_t *)char1);
env->ReleaseStringChars(str,char1);
std::reverse(wstr.begin(),wstr.end());
jstring js1=env->NewString((const jchar *)wstr.c_str(),wstr.size());*/
/* jsize length= env->GetStringLength(str);
jchar * char1=new jchar[length];
env->GetStringRegion(str,0,length,char1);
jstring js1=env->NewString(char1,length);
delete[] char1;*/
//outException in thread "main" java.lang.StringIndexOutOfBoundsException
// at TestString.set(Native Method)
/* jsize length1= env->GetStringLength(str);
jsize length=env->GetStringUTFLength(str);
cout<<length1<<endl;
cout<<length<<endl;
char* char1=new char[length+1];
char1[length]='\0';
env->GetStringUTFRegion(str,0,length,char1);
jstring js1=env->NewStringUTF(char1);
delete [] char1;*/
jboolean* b=new jboolean(true);
const jchar* char1=env->GetStringChars(str,b);
jstring js1=env->NewString(char1,env->GetStringLength(str));
delete b;
env->ReleaseStringChars(str,char1);
setStr(env, obj, js1);
//env->getboolean
}
JNIEXPORT void JNICALL Java_TestString_set1
(JNIEnv * env, jclass clazz, jstring str){
}
env->FindClass(env,"java/lang/String");