Java 之 反射机制

一、反射介绍

  Java程序中,所有的对象都有两种类型:编译时类型运行时类型,而很多时候对象的编译时类型和运行时类型不一致。

  例如:我们某些变量或形参的类型是Object类型,但是程序确需要调用该对象运行时类型的方法,该方法不是Object中方法,那么如何解决呢?

  为了解决这些问题,程序需要在运行时发现对象和类的真实信息,我们有两种方法:

  (1)第一种是在编译和运行时都完全知道类型的具体信息,在这种情况下,我们可以直接先使用instanceof运算符进行判断,再利用强制类型转换符将其转换成运行时类型的变量即可。

  (2)第二种是编译时根本无法预知该对象和类的真实信息,程序只能依靠运行时信息来发现该对象和类的真实信息,这就必须使用反射。

  因为加载完类之后,在堆内存的方法区中就产生了一个Class类型的对象(一个类只有一个Class对象),这个对象就包含了完整的类的结构信息。我们可以通过这个对象看到类的结构。这个对象就像一面镜子,透过这个镜子看到类的结构,所以,我们形象的称之为:反射

二、反射:框架设计的灵魂

  框架:是一个可以供我们使用的半成品软件。可以在框架的基础上进行软件开发,简化编码。

  反射:将类的各个组成部分封装为其他对象,这就是反射机制。

    好处

      (1)可以在程序运行过程中,操作这些对象。

      (2)可以解耦,提供程序的可扩展性。

  Java 代码的三个阶段:

三、用途

  1、通过反射查看类的信息

  2、通过反射生成并操作对象

猜你喜欢

转载自www.cnblogs.com/niujifei/p/12311860.html
今日推荐