zoukankan      html  css  js  c++  java
  • 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,失败返回负数

  • 相关阅读:
    stm32f103和stm32f407的GPIO口模式设置以及相互对应的关系
    基于STM32单片机实现屏幕休眠后OLED屏幕滚动效果
    基于51单片机的超声波模块HC-SR04的使用
    用51单片机控制L298N电机驱动模块
    学习笔记——51单片机 单片机与单片机之间的通讯
    基于51单片机的电子密码锁—1
    LCD1602学习调试
    基于51单片机,通过定时器实现的时钟程序
    有进度条圆周率计算
    python turtle 学习笔记
  • 原文地址:https://www.cnblogs.com/Reverse-xiaoyu/p/14136192.html
Copyright © 2011-2022 走看看