/*
* Class: demo_Demo16
* Method: f
* Signature: (I)V
*/
JNIEXPORT void JNICALL Java_demo_Demo16_f__I
(JNIEnv * env, jobject obj, jint p){
jclass cls = env->GetObjectClass(obj);
jfieldID fID = env->GetFieldID(cls,"s","Ljava/lang/String;");
jstring str = static_cast<jstring>(env->GetObjectField(obj,fID));
const char * s = env->GetStringUTFChars(str,NULL);
cout << "Get field s(String) = " <<s << endl;
env->ReleaseStringUTFChars(str,s);
jstring string = env->NewStringUTF("Java JNI set field!");
env->SetObjectField(obj,fID,string);
cout << p << endl;
cout << "Java_demo_Demo16_f__I" <<endl;
}
Get field s(String) = OKKKKKKKKKKK
12
Java_demo_Demo16_f__I
Java JNI set field!
demo_Demo16.cpp(29): error C2683: 'dynamic_cast': '_jobject' is not a polymorphi
c type
指的是子类继承的父类中没有“虚”的信息,虚基类,虚函数啊,纯虚函数。。。所以dynamic_cast不能用啊!!!