Java学习day034 反射(一)Class类、捕获异常、利用反射分析类的能力

使用的教材是java核心技术卷1,我将跟着这本书的章节同时配合视频资源来进行学习基础java知识。

day034   反射(一)Class类、捕获异常、利用反射分析类的能力

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

能够分析类能力的程序称为反射(reflective)。反射机制的功能极其强大,在下面可以看到,反射机制可以用来:

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

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

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

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

反射是一种功能强大且复杂的机制。使用它的主要人员是工具构造者,而不是应用程序员,如果仅对设计应用程序感兴趣,而对构造工具不感兴趣,可以跳过这部分,稍后再返回来学习。


1.Class类

在程序运行期间,Java运行时系统始终为所有的对象维护一个被称为运行时的类型标识。这个信息跟踪着每个对象所属的类。虚拟机利用运行时类型信息选择相应的方法执行。

然而,可以通过专门的Java类访问这些信息。保存这些信息的类被称为Class,这个名字很容易让人混淆。Object类中的getClass()方法将会返回一个Class类型的实例。

Employee e;
...
Class cl=e.getClass();

如同用一个Employee对象表示一个特定的雇员属性一样,一个Class对象将表示一个特定类的属性。最常用的Class方法是getName。这个方法将返回类的名字。例如,下面这条语句:

System.out.println(e.getClass().getName()+""+e.getName());

如果e是一个雇员,则会打印输出:

Employee Harry Hacker

如果e是经理,则会打印输出:

Manager Harry Hacker

如果类在一个包里,包的名字也作为类名的一部分:

Random generator=new Random();
Class cl=generator.getClass();
String name=cl.getName();
//name is set to"java.util.Random"

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

String className="java.util.Random";
Class cl=Class.forName(className);

如果类名保存在字符串中&#

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值