Java 基础 (七) 反射机制

Java基础(七) 反射机制和动态代理

  • 反射机制
  • 反射的作用
  • 动态代理

1. 反射(浅谈)

反射的思想,在Java框架内被广泛运用。反射的思想源于物理学中光学的反射概念。在Java内又是另一种概念。平时,我们照镜子的时候,镜子内部都会显示出我们的影子,Java内也不例外。一个类或者是对象的反射,应当获取自身的对象,该对象是一个java.lang.Class类的对象(一个镜像文件)。

一个类或对象获得自身Class对象的过程叫做反射。
有两种对象可以活着自身的Class对象(对每一个被装载的类型(类或接口),JVM虚拟机都会为它创建一个java.lang.Class实例):

1)Class c = Class.forName("com.us.demo.Student");//虚拟机中没有该类的Class的实例对象
2)Class c1=stu.getClass();//虚拟机内已经存在了Class的实例对象
  Class c2=this.getClass();//虚拟机内已经存在了Class的实例对象

注意:类和它的所有对象通过反射获得的class对象都是同一个,在这个例子里面时com.us.demo.Student

反射机制可以让我们利用这个Class对象来获取和修改私有方法,不通过共有的方法所得。(原来我们例子都是通过一个public的方法来设置和获取私有的变量,可以破坏数据的封装性。)

常见的反射方法,通常可以做如下几个作用:

  • 可以创建对象;
  • 可以访问对象中的属性;
  • 可以访问对象内的方法;
  • 可以访问对象内的构造器。

示例程序:

http://www.cnblogs.com/lzq198754/p/5780331.html

反射机制通过在运行时探查字段和方法,从而可以帮助我们可以写出通用性很好的方法。但是这项能力对于系统编程非常有用,通常是运用在编程中间件内。但是,它不适合编写应用程序,反射是脆弱的(它不能帮你发现编译错误,任何错误在运行时都会导致异常)。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值