java反射

Posted scnu-yang

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java反射相关的知识,希望对你有一定的参考价值。

一、概念:java反射机制:JAVA反射机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法;对于任意一个对象,都能够调用它的任意一个方法和属性;这种动态获取的信息以及动态调用对象的方法的功能称为java语言的反射机制。

要想解剖一个类,必须先要获取到该类的字节码文件对象。而解剖使用的就是Class类中的方法.所以先要获取到每一个字节码文件对应的Class类型的对象。反射就是把java类中的各种成分映射成一个个的java对象。【通俗点:正常的:知道这个类->就可以通过创建对象来调用类中的方法和属性。反射:通过已知对象,获取到相应的类,进而调用该类的其它:方法和成员。】

二、反射机制获取类的三种方法:
  1)直接通过类名.class的方式得到:clazz = person.class;#clazz其实就是我们所获得的类,只是为了与java的class不冲突而叫这个而已。
  2)通过对象的getClass()方法获取,这个使用的少(一般是不知道什么类型的时候才用):Object obj = new Person();clazz = obj.getClass();
  3)通过全类名获取,用的比较多,但可能抛出classNotFoundExcetion异常:clazz = Class.forName("com.java.reflection.person");

备注:
  1)利用Class类的newInstance()方法创建类对象时,调用的类必须要有无参的构造器。
  2)类加载器:classLoad是用来把class装载进jvm的,JVM规范定义了两种类型的类装载器:启动类装载器bootstrap和用户自定义装载器user-defined class loader。

以上是关于java反射的主要内容,如果未能解决你的问题,请参考以下文章

JAVA反射Field

反射机制在java中如何做呀?

如何利用java的反射机制动态创建对象

说说对java反射的理解,使用反射如何获取一个类的所有方法,使用反射需要注意哪些问题?

请问java中的反射机制与用法

Java反射机制