反射学习笔记

反射:程序可以访问、检测和修改它本身状态或行为的能力
反射常用于:获取类信息、动态构造对象、动态调用方法等

一. 获取类对象的三种方法
1. 第一种:
Class class_name=Class.forName(“类的全路径”);
2. 第二种:
Class class_name=类名.class;
3. 第三种:
类名 对象名=new 类名();
Class class_name=对象名.getClass();

二. 动态创建对象
1. 通过类对象创建
Class className=类名.class;
类名 对象名=(类名)className.newInstance();
注:此处的newInstance()返回的是Object
2. 通过构造对象创建
Class className=类名.class;
Constructor 构造对象=className.getConstructor(参数类型列表);
注:获取的是非私有的构造方法
类名 对象名=(类名)构造对象.newInstance(实参);

三. 获取Class类的构造方法
1.获取单个构造函数(仅限公有)
Constructor getConstructor(Class [ ] param)
2.获取所有的构造函数(仅限公有)
Constructor [ ] getConstructors();
3.获取单个构造函数(包括私有)
Constructor getDeclaredConstructor(Class [ ] param);
4.获取所有的构造函数(包括私有)
Constructor [ ] getDeclaredConstructors();

四. 获取Class类的属性
1.获取单个属性(仅限公有)
Field getField(String name)
2.获取所有的属性(仅限公有)
Field [ ] getFields()
3.获取单个属性(包括私有)
Field getDeclaredField(String name);
4.获取所有的属性(包括私有)
Field [ ] getDeclaredFields();

五.获取Class类包含的方法
1.获取单个方法(仅限公有)
Method getMethod(String name,Class [ ] param)
2.获取所有的属性(仅限公有)
Method [ ] getMethods()
3.获取单个属性(包括私有)
Method getDeclaredMethod(String name,Class [ ] param)
4.获取所有的属性(包括私有)
Method [ ] getDeclaredMethods()

六.动态调用Method方法
1. 定义
Object invoke(Object obj,Object args)
—Method对象调用invoke
1.调用有参数的方法
Method m1=类对象.getMethod(“方法名”,参数列表);
m1.invoke(对象名,参数);
2.调用无参数的方法
Method m2=类对象.getMethod(“方法名”,null);
m2.invoke(对象名,null);

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值