JNI完全指南(九)——反射

来源:互联网 发布:彩票代购软件 编辑:程序博客网 时间:2024/06/05 00:36

JNI完全指南(九)——反射

标签(空格分隔): JNI完全指南

版本:1作者:陈小默声明:禁止商业,禁止转载

发布于:作业部落、简书、CSDN博客


上一篇:JNI完全指南(八)——NIO


  • JNI完全指南九反射
  • 九反射
    • 1 将一个Method对象转换为方法ID
    • 2 将一个Field对象转换为属性ID
    • 3 反射得到Method对象
    • 4 反射得到Field对象


九、反射

反射能够使开发者在仅知道名称的情况下就能操作方法和属性。JNI提供了一系列在Java反射的核心方法。

9.1 将一个Method对象转换为方法ID

jmethodID FromReflectedMethod(JNIEnv *env, jobject method);

  • method:java.lang.reflect.Method或者java.lang.reflect.Constructor对象。通过9.3得到。

9.2 将一个Field对象转换为属性ID

jfieldID FromReflectedField(JNIEnv *env, jobject field);

  • field:java.lang.reflect.Field对象,通过9.4得到。

9.3 反射得到Method对象

以下方法将一个来源于cls类的方法ID转换为java.lang.reflect.Method或者java.lang.reflect.Constructor对象。

jobject ToReflectedMethod(JNIEnv *env, jclass cls,jmethodID methodID, jboolean isStatic);

  • cls:方法所在的类。
  • methodID:方法ID。
  • isStatic:是否是静态方法。
  • return:java.lang.reflect.Method或者java.lang.reflect.Constructor对象。失败是返回NULL。

存在异常

  • OutOfMemoryError

9.4 反射得到Field对象

以下方法将一个来源于cls类的属性ID转换为java.lang.reflect.Field对象。

jobject ToReflectedField(JNIEnv *env, jclass cls,jfieldID fieldID, jboolean isStatic);

  • cls:属性所在的类对象。
  • fieldID:属性ID。
  • isStatic:是否是静态属性。

存在异常

  • OutOfMemoryError

下一篇:JNI完全指南(十)——Java 虚拟机


[1]ORACLE guides for JNI——Chapter 4: JNI Functions

0 0
原创粉丝点击