java基础知识

反射机制

2019-02-20  本文已影响53人  程序员三千_

什么是反射?

    反射机制是在程序运行状态中,对于任意一个类,都能够获取这个类的所有属性和方法;

对于任意一个对象,都能够调用它的任意一个方法和属性;

这种动态获取信息以及动态调用对象的方法的功能称为java语言的反射机制。

反射的作用

1.可以实现简单的反编译,获取类中的属性和方法等基本信息,.class—>java

2.通过反射机制获取类的属性、方法等

    在使用eclipse时,通过对象引用.的方式,eclipse就会将这个对象中的所有属性和方法展示出来,这个就是利用的反射机制。其实反射应用最多的地方就是将来要学习的框架,例如spring、spring MVC、Mybatis、hibernate、Struts等等

反射的优点

    提高程序的灵活性和扩展性。使用反射机制后,程序在创建对象的时候不用使用new关键字写死在程序中了,而是从配置文件中进行读取,这样可以提高程序的灵活性

反射的缺点

    影响性能。使用反射时,代码量稍微多点,并且是要动态的将读取类,所以会影响性能。下面例子可能不太恰当,不过希望能够帮助你更好地了解,比如你要做汽车:

正常的方式是司机停车,你开门上车。

动态的方式就是司机不停车,只降低车速,然后你跑着开门上车。

破坏封装性。

Class对象

    在类加载器将.class文件读取到内存中的时候,jvm会创建这个.class文件的对象,并且只创建一个存放到jvm的方法区内存中,在java.lang包下有个Class类,这个类就是.class文件的对象类型,任何类在被使用时,都会创建这个类的Class对象。除此之外,在java.lang.reflect包下面的类也跟反射有关。

创建一个Person类:

获取这个Person类的Class对象有三种方式:

使用反射将.class文件读取到内存中

将上面的Person.java文件删除,留下Person.class文件。

使用反射将Person.class文件读取到内存中

使用反射创建Person类的对象

使用反射获取类中的属性

使用反射获取类中指定的属性并赋值

使用反射获取类中的方法

下面程序将.class文件中的方法反编译并打印出来了

User类:

测试类:

使用反射调用类中的方法

使用反射获取构造方法

使用反射获取父类和父接口

上一篇下一篇

猜你喜欢

热点阅读