• JNI 函数(八)反射支持、获取虚拟机


    JNI 函数(八)反射支持、获取虚拟机

    一、反射支持

      如果程序员知道方法属性的名称和类型,则直接使用 JNI 调用 Java 方法或者访问 Java 字段。Java 核心反射 API 允许在运行时反射 Java 类。JNI 提供了 JNI 中使用的字段和方法 ID 与 Java Core Reflection API 中使用的字段和方法对象之间的一组转换函数。

      (一)、转化获取方法ID

    函数原型:jmethodID FromReflectedMethod(JNIEnv *env,jobject method);

      将 java.lang.reflect.Method 或者 java.lang.reflect.Constructor 对象转换为方法 ID

      参数:

        env:JNIEnv 接口指针

        method:java.lang.reflect.Method 或者 java.lang.reflect.Constructor 对象

      返回:

        方法 ID

      (二)、转化获取属性ID

    函数原型:jfield FromReflectedField(JNIEnv *env,jobject field);

      将 java.lang.reflect.Field 转化域 ID

      参数:

        env:JNIEnv 接口指针

        field:java.lang.reflect.Field 对象

      返回:

        域 ID

      (三)、反转化并获取方法对象

    函数原型:jobject ToReflectedMethod(JNIEnv *env,jclass clazz,jmethodID methodID, jboolean isStatic);

      将源自 cls 的方法 ID 转化为 java.lang.reflect.Method 或者 java.lang.reflect.Constructor 对象。如果方法 ID 指向一个静态属性,isStatic 必须设置为 JNI_TRUE,否则为 JNI_FALSE。

      参数:

        env:JNIEnv 接口指针

        clazz:Java 类对象

        methodID:Java 类对应的方法 id

        isStatic:是否是静态方法

      返回

        对应 Java 层  java.lang.reflect.Method 或者 java.lang.reflect.Constructor 对象。如果失败,则返回 0

      异常:

        如果内存不足,则抛出 OutOfMemoryError

      (四)、反转化并获取属性对象

    函数原型:jobject ToReflectedField(JNIEnv *env,jclass cls,jfieldID field,jboolean isStatic)

      将来源于 cls 的属性 ID 转化为 java.lang.reflect.Field 对象。如果属性 ID 指向一个静态属性,isStatic 必须设置为 JNI_TRUE,否则为 JNI_FALSE

      参数:

        env:JNIEnv 接口指针

        cls:Java 类对象

        methodID:Java 对应的属性 ID

        isStatic:是否是静态属性

      返回:

        成功返回 java.lang.reflect.Field 对象,失败返回 0

      异常:

        如果内存不足,则抛出 OutOfMemoryError

    二、获取虚拟机

    函数原型:jint GetJavaVM(JNIEnv *env, JavaVM **vm);

      返回当前线程对应的 java 虚拟机接口。返回的结果保存在 vm。

      参数:

        env:JNI 接口指针

        vm:保存虚拟机指针

      返回:

        成功返回 0,失败返回负数

  • 相关阅读:
    盾机
    隐藏服务器真实IP的方法来防止DDOS攻击
    EJS 是什么 ,怎么用,以及优点
    Centos7 / RHEL 7 双网卡绑定
    linux下配置双网卡及RAC规划——1
    Why React Is Favored by Front-End Specialists
    React Virtual DOM Explained in Simple English
    React Core Features
    Virtual DOM--react
    redux是全局状态(数据)的管理机制,局部数据没有意义
  • 原文地址:https://www.cnblogs.com/Reverse-xiaoyu/p/14136192.html
Copyright © 2020-2023  润新知