JAVA反射
写代码测试了一下JAVA反射
Java反射的相关类
Class类
拿到Class之后可以获取它的属性
Java封装
Java反射
写代码测试一下Java反射中用到的一些api的使用方法
新建一个类来定义一些Field和函数
在主函数中去通过反射调用,测试一下(测试变量调用)
- 如果是StaticField那么它是属于类的,可以直接通过类调用
- 如果是PrivateField那么它是属于实例的,需要实例化之后调用
- 如果是Private还需要修改访问权限
setAccessible(true); // 通过取消权限检查来修改访问限制
在主函数中去通过反射调用,测试一下(测试函数调用)
- 跟变量的调用方式是一样的
以及在native中调用的流程也是一样的,只是使用的api不同
对比
获取类名:
Test.class>env->FindClass获取FieldID:
testClazz.getDeclaredField>env->GetStaticFieldID获取值:
publicStaticField_field.get>env->GetStaticObjectField
native使用C和C++编写会略有不同
用C实现的话,函数调用的第一个参数要传入JNIEnv*
- 因为在jni.h中的声明不同,所以C在使用这些api的时候需要传入env作为第一个参数,还有C里面没有String所以字符串要改为char*之类的改动
- 总体来说C要比C++更麻烦一些,不如C++简洁
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来源 xiaoeryu!
评论
