反射从入门到精通
2023-12-14 16:57:04
本文主要讲解反射的使用,主要讲解反射获取类的构造方法,成员变量,成员方法的几种方式
应用场景:在我看来目前可以用在参数校验,动态代理,现在代理一般都是直接用aop,很少有需求自己做的
1.获取构造函数
1.获取所有公共构造函数
Constructor<?>[] constructors = aClass.getConstructors();
2.暴力反射获取所有的构造函数
Constructor<?>[] declaredConstructors = aClass.getDeclaredConstructors();
3.根据参数类型获取所有的构造函数
Constructor<?> declaredConstructor = aClass.getDeclaredConstructor(String.class);
2.获取成员方法以及调用成员方法
1.获取成员方法的几种方式
Method[] declaredMethods = aClass.getDeclaredMethods();
Method[] methods = aClass.getMethods();
Method method= aClass.getMethod("方法名",参数类型.class)
2.调用成员方法
Object ds = method.invoke(调用的对象, 方法的参数值);
3.调用私有方法
//跳过检查
method.setAccessible(true);
Object ds = method.invoke(调用的对象, 方法的参数值);
3.获取成员变量和变量值,以及给变量赋值
1.获取参数的几种方式
Field[] fields = aClass.getFields();
Field[] declaredFields1 = aClass.getDeclaredFields();
Field 参数名 = aClass.getField("参数名");
2.获取参数值的方法
(一)先获取Field对象
Field field = aClass.getField("参数名");
(二)
field.get(要获取的对象) //这样就可以拿到,可以对具体的类型就行强转
3.给参数赋值
declaredField.set(赋值的对象,要赋的值);
不管哪一个成员参数都有一个共同特点,如果是公共参数,那么直接操作即可,如果不是的话,操作之前最好是设置跳过检查? ?eg:? ? ?method.setAccessible(true);
文章来源:https://blog.csdn.net/weixin_59244784/article/details/134996135
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!