学习android JNI的那些事儿--------7. 在JNI中创建java类对象
2014-06-09 17:38
375 查看
on_jniload
学习android JNI的那些事儿--------7. 在JNI中创建java类对象
分类: Android C++ JNI2012-02-2915:28 1688人阅读 评论(3) 收藏 举报
jnijavaandroidclassstringnull
之前我们介绍过在jni中调用java中的成员函数,这里我们来介绍下载jni中创建java中的类对象,其实跟之前一样就是调用java类中的构造函数。
我们在之前的例子的前提下修改一个带参数的构造函数,然后再main activety中使用native code去new一个class对象,在jni中调用构造函数传入参数去给类的成员变量赋值,最后打印出log。
-------------------------------------------------------------
先看下构造函数:
[java] view
plaincopy
public class Student {
private String name;
private int number;
Student(int num, String string){
name = string;
number = num;
}
在按下button的时候新建一个class 对象:
[java] view
plaincopy
public void onClick(View v) {
if(v.getId() == R.id.button1 ){
// accessInstanceMethod("Instance Method Call");
// student=doWithObj(student);
// tv.setText("name:"+student.getName()+", number:"+student.getNumber());
Student student = createObj();
System.out.println( "name: "+student.getName()+", number: "+student.getNumber());
}
最后看下在jni中是如何做的:
[cpp] view
plaincopy
jobject
Java_com_android_jni_MyJNI_createObj(JNIEnv *env,jobject jobj)
{
jobject student = NULL;
jclass student_cls = (*env)->FindClass(env,
"com/android/jni/Student");
if(student_cls == NULL)
return NULL; //can not find class Studnet
jmethodID student_mtd = (*env)->GetMethodID(env,student_cls,"<init>",
"(ILjava/lang/String;)V");
if(student_mtd == NULL)
return NULL;
jstring jstr = (*env)->NewStringUTF(env,"[Jay]");
student = (*env)->NewObject(env,student_cls,student_mtd,10,jstr);
(*env)->DeleteLocalRef(env,jstr);
return student;
}
很简单,就是调用了NewObect来新建一个对象,之前需要FindClass,然后得到构造函数的methodID。
之后运行模拟器,使用logcat查看打印出来的消息。
/article/1358971.html
相关文章推荐
- 学习android JNI的那些事儿--------7. 在JNI中创建java类对象
- 学习android JNI的那些事儿--------6. 在java中传入引用数据类型(对象)作为参数
- 学习android JNI的那些事儿--------2. HelloWorld
- 学习android JNI的那些事儿--------1. 搭建环境
- Android JNI和NDK学习(09)--JNI实例二 传递类对象
- 学习android JNI的那些事儿--------3. basic Types, Strings and Arrays
- JNI学习笔记(四)JNI中本地语言创建Java对象并且访问具体方法(附例子)
- Android中JNI高级应用 - 本地C代码中创建Java对象及本地JNI对象的保存
- Android中JNI高级应用 - 本地C代码中创建Java对象及本地JNI对象的保存 .
- Android中关于JNI 的学习(三)在JNI层訪问Java端对象
- 学习android JNI的那些事儿
- 学习android JNI的那些事儿--------5. Field & Method --> Accessing Mehtod
- JNI学习笔记4——本地代码创建Java对象(包括javaString)
- 学习android JNI的那些事儿--------4. Field & Method --> Accessing Field
- 学习android JNI的那些事儿--------1. 搭建环境
- Android中JNI高级应用 - 本地C代码中创建Java对象及本地JNI对象的保存
- java学习之JNI 学习四 创建JAVA对象
- Android JNI(NDK)简单学习(环境搭建,创建一个JNI项目的基本流程)
- Android中关于JNI 的学习(三)在JNI层访问Java端对象
- 学习android JNI的那些事儿--------2. HelloWorld