2018-10-20 java反射

2018-10-21  本文已影响0人  LoveXiaer

java反射基础:

在运行状态中,对于任意一个类,都能够获取到这个类的所有属性和方法,对于任意一个对象,都能够调用它的任意一个方法和属性(包括私有的方法和属性),这种动态获取的信息以及动态调用对象的方法的功能就称为java语言的反射机制。通俗点讲,通过反射,该类对我们来说是完全透明的,想要获取任何东西都可以。

3种方式均可以获取:

1、源文件阶段:Class clazz1 = Class.forName("全限定类名");//通过Class类中的静态方法forName

2、class字节码阶段:Class clazz2  = Person.class;    //当类被加载成.class文件时,此时Person类变成了.class,在获取该字节码文件对象,也就是获取自己

3、已有对象的阶段:Class clazz3 = p.getClass();    //通过类的实例获取该类的字节码文件对象

操作整个类的所有东西:构造方法、成员变量、成员方法;

需要注意:

1、getFiled()方法 和 getDeclaredFiled()方法区别使用,获取私有属性或方法时,需要设置可访问权限;

2、注意静态的东西可以不用newInstance就可以获取到,但是非静态的需要有对象才能获取到,所以静态变量在getField(null),但非静态的需要有该类的示实例object才可以获取到相应的值,因为非静态的东西是依附于对象,而不是类;

3、可以指定构造函数来实例化对象;

https://www.cnblogs.com/whgk/p/6122036.html

上一篇 下一篇

猜你喜欢

热点阅读