反射机制简述

反射是Java被视为动态语言的关键,反射机制允许程序在执行期借助于反射API取得任何类的内部信息,并能够直接操作任意对象的内部属性及方法。
获取Class对象的常用方法:

Class c=Class.forName("java.lang.String");

即使是private修饰的关键词也可以读取到。
功能:
1)在运行时判断任意一个类所具有的的成员变量和方法;
2)在运行时获得泛型信息;
3)在运行时处理注解;
4)生成动态代理;
5)在运行时判断任意一个对象所属的类;
6)在运行时构造任意一个类的对象;

  • instanceof用来判断是否为某个类的实例:
System.out.println(Class.forName(properties.getProperty("FactoryName")).newInstance() instanceof IFactory );
  • 使用newInstance()方法来创建Class对象对应类的实例。
IFactory operFactory = (IFactory) Class.forName("AddFactory").newInstance();
  • 优缺点:
    优点:
    1)提高了程序的灵活性和扩展性,降低模块耦合度;
    2)在运行时获得类的各种内容,调用对象的方法。
    3)使用反射可以避免将代码写死在框架中。
    缺点:
    1)反射会消耗一定的系统资源,反射操作的效率要比正常操作的效率低很多;
    2)反射调用方法时可以忽略权限检查,因此可能会破坏封装性而导致安全问题。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值