Java——反射详解

目录

一、概念

二、功能

三、反射相关的重要的类

3.1 class类

3.2 获取class类的方法

3.3 class类中的方法

3.4 Field类方法

 3.5 打破封装

一、概念

反射库(reflection library)提供了一个非常丰富且精心设计的工具集,以便编写能够动态操纵Java代码的程序。这项功能被大量地应用于JavaBeans中,它是Java组件的体系结构。使用反射,Java可以支持Visual Basic用户习惯使用的工具。特别是在设计或运行中添加新类时,能够快速地应用开发工具动态地查询新添加类的能力。能够分析类能力的程序称为反射(reflective)。

二、功能

反射机制的功能极其强大,在下面可以看到,反射机制可以用来:

● 在运行时分析类的能力。

● 在运行时查看对象,例如,编写一个toString方法供所有类使用。

● 实现通用的数组操作代码。

● 利用Method对象,这个对象很像C++中的函数指针。

注意:反射是一种功能强大且复杂的机制。使用它的主要人员是工具构造者,而不是应用程序员。

三、反射相关的重要的类

 注意:必须先获得Class才能获取Method、Constructor、Field

3.1 class类

在程序运行期间,Java运行时系统始终为所有的对象维护一个被称为运行时的类型标识。这个信息跟踪着每个对象所属的类。虚拟机利用运行时类型信息选择相应的方法执行。然而,可以通过专门的Java类访问这些信息。保存这些信息的类被称为Class。

3.2 获取class类的方法

Object类中的getClass( )方法将会返回一个Class类型的实例。

调用静态方法forName获得类名对应的Class对象

注意:如果类名保存在字符串中,并可在运行中改变,就可以使用这个方法。当然,这个方法只有在className是类名或接口名时才能够执行。否则,forName方法将抛出一个checked exception(已检查异常)。无论何时使用这个方法,都应该提供一个异常处理器(exception handler)。

获得Class类对象的第三种方法非常简单。如果T是任意的Java类型(或void关键字), T.class将代表匹配的类对象。

注:以上三种方式返回值都是Class类型。

3.3 class类中的方法

通过反射实例化对象
对象.newInstance()
注:newInstance()方法内部实际上调用了无参数构造方法,必须保证无参构造存在才可以。
否则会抛出java.lang.InstantiationException异常。

3.4 Field类方法

 3.5 打破封装

set()可以访问私有属性时,需要打破封装,才可以访问

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值