Android JNI 学习(六):Object Operations Api
一、AllocObject
jobjectAllocObject(JNIEnv *env, jclass clazz);
分配新 Java 对象而不调用该对象的任何构造函数。返回该对象的引用。
clazz 参数务必不要引用数组类。
参数:
env:JNI 接口指针。
clazz:Java 类对象。
返回值:
返回 Java 对象。如果无法构造该对象,则返回NULL。
抛出:
InstantiationException:如果该类为一个接口或抽象类。
OutOfMemoryError:如果系统内存不足。
二、NewObject、NewObjectA、NewObjectV
jobjectNewObject(JNIEnv *env, jclass clazz, jmethodID methodID, ...);
jobject NewObjectA(JNIEnv *env,jclass clazz, jmethodID methodID, jvalue *args);
jobject NewObjectV(JNIEnv *env,jclass clazz, jmethodID methodID, va_list args);
构造新 Java 对象。方法 ID指示应调用的构造函数方法。该 ID 必须通过调用 GetMethodID() 获得,且调用时的方法名必须为 <init>,而返回类型必须为 void (V)。
clazz参数务必不要引用数组类。
NewObject
编程人员应将传递给构造函数的所有参数紧跟着放在 methodID 参数的后面。NewObject()收到这些参数后,将把它们传给编程人员所要调用的 Java 方法。
NewObjectA
编程人员应将传递给构造函数的所有参数放在 jvalues 类型的数组 args 中,该数组紧跟着放在 methodID 参数的后面。NewObject()收到数组中的这些参数后,将把它们传给编程人员所要调用的 Java 方法。
NewObjectV
编程人员应将传递给构造函数的所有参数放在va_list 类型的参数 args 中,该参数紧跟着放在 methodID 参数的后面。NewObject()收到这些参数后,将把它们传给编程人员所要调用的 Java 方法。
参数:
env:JNI 接口指针。
clazz:Java 类对象。
methodID:构造函数的方法 ID。
NewObject 的其它参数:
传给构造函数的参数。
NewObjectA 的其它参数:
args:传给构造函数的参数数组。
NewObjectV 的其它参数:
args:传给构造函数的参数 va_list。
返回值:
返回 Java 对象,如果无法构造该对象,则返回NULL。
抛出异常/错误:
InstantiationException:如果该类为接口或抽象类。
OutOfMemoryError:如果系统内存不足。
三、GetObjectClass
jclassGetObjectClass(JNIEnv *env, jobject obj);
返回对象的类。
参数:
env:JNI 接口指针。
obj:Java 对象(不能为 NULL)。
返回值:
返回 Java 类对象。
四、IsInstanceOf
jbooleanIsInstanceOf(JNIEnv *env, jobject obj, jclass clazz);
测试对象是否为某个类的实例。
参数:
env:JNI 接口指针。
obj:Java 对象。
clazz:Java 类对象。
返回值:
如果可将 obj 强制转换为 clazz,则返回 JNI_TRUE。否则返回 JNI_FALSE。NULL 对象可强制转换为任何类。
五、IsSameObject
jbooleanIsSameObject(JNIEnv *env, jobject ref1, jobject ref2);
测试两个引用是否引用同一 Java 对象。
参数:
env:JNI 接口指针。
ref1:Java 对象。
ref2:Java 对象。
返回值:
如果 ref1 和 ref2 引用同一 Java 对象或均为 NULL,则返回 JNI_TRUE。否则返回 JNI_FALSE。
Android JNI 学习(六):Object Operations Api的更多相关文章
- Android JNI 学习(十一):Invocation Api
1. 简介 Invocation API允许软件提供商在原生程序中内嵌Java虚拟机.因此可以不需要链接任何Java虚拟机代码来提供Java-enabled的应用程序. 以下代码演示如何使用: #in ...
- Android JNI 学习(五):References Api
1. NewGlobalRef(创建全局引用) jobjectNewGlobalRef(JNIEnv *env, jobject obj); 创建 obj 参数所引用对象的新全局引用.obj 参数既可 ...
- Android JNI学习(四)——JNI的常用方法的中文API
本系列文章如下: Android JNI(一)——NDK与JNI基础 Android JNI学习(二)——实战JNI之“hello world” Android JNI学习(三)——Java与Nati ...
- Android JNI学习(三)——Java与Native相互调用
本系列文章如下: Android JNI(一)——NDK与JNI基础 Android JNI学习(二)——实战JNI之“hello world” Android JNI学习(三)——Java与Nati ...
- Android JNI学习(二)——实战JNI之“hello world”
本系列文章如下: Android JNI(一)——NDK与JNI基础 Android JNI学习(二)——实战JNI之“hello world” Android JNI学习(三)——Java与Nati ...
- Android JNI学习(五)——Demo演示
本系列文章如下: Android JNI(一)——NDK与JNI基础 Android JNI学习(二)——实战JNI之“hello world” Android JNI学习(三)——Java与Nati ...
- Android JNI 学习(一):JNI 简介
JNI 即 Java Native Interface 是 native 编程接口,它允许在Java虚拟机(VM)内运行Java代码与其他编程语言(主要是C和C++)编写的应用程序和库进行交互操作. ...
- Android JNI 学习(十):String Operations Api & Other Apis
一.String Operations(字符串操作) 1. NewString jstring NewString(JNIEnv *env, const jchar *unicodeChars, js ...
- Android JNI 学习(四):接口方法表 & Base Api & Exception Api
本文我们来总结一下JNI 提供的功能列表及相关的函数表. 注意:请注意使用术语“必须”来描述对JNI程序员的限制.例如,当您看到某个JNI函数必须接收非NULL对象时,您有责任确保不将NULL传递给该 ...
随机推荐
- SQL CTE递归
WITH cte_name AS ( --Anchor member is defined ' UNION ALL --Recursive member is defined referencing ...
- Codeforces 766D. Mahmoud and a Dictionary 并查集 二元敌对关系 点拆分
D. Mahmoud and a Dictionary time limit per test:4 seconds memory limit per test:256 megabytes input: ...
- python搭建服务器时nginx的有关问题
最近在学习Python服务器搭建的内容,网上大多是Windows环境下的,由于我使用的是Mac,为了不想装双系统折腾,就只好一步步采坑了.比较基础的我一步步记录下来, 1.安装nginx: brew ...
- 批量运维SQl生成,可以用EXCEl,也可以SQL查询生成
select 'insert into Base_VehiclesInformation (ID,CarModelID,FistRegTime,ScrappageDate, Creator,Creat ...
- 基于grafana+telegraf的服务器监控方案
准备工作:安装InfluxDb 1 Windows 1.1 下载agent https://dl.influxdata.com/telegraf/releases/telegraf-1.10 ...
- django中的modelform和modelfoemset
一. ModelForm ModelForm是根据Model来定制的Form 二. ModelForm的创建 from django import forms from app import mode ...
- JAVA的环境变量配置
开发JAVA程序需要先准备开发环境,安装好操作系统后首先需要去下载JDK并安装. JDk(Java Development Kit )是Java开发工具包,如果您要开发基于Java的应用首先需要下载并 ...
- php常用字符串方法
chop() 移除字符串右侧的空白字符或其他字符 ltrim() 移除字符串左侧的空白字符或其他字符 rtrim() 移除字符串右侧的空白字符或其他字符 tr ...
- 20145232韩文浩 《网络对抗技术》 Web安全基础实践
问题回答 SQL注入攻击原理?如何防御? 原理:SQL注入攻击指的是通过构建特殊的输入作为参数传入Web应用程序,而这些输入大都是SQL语法里的一些组合,通过执行SQL语句进而执行攻击者所要的操作,使 ...
- _ZNote_Window_技巧_删除开机启动项
win + R 输入msconfig 可以打开