前言:Java反射(Reflection)是Java非常重要的动态特性,通过使用反射我们不仅可以获取到任何类的成员方法(Methods)、成员变量(Fields)、构造方法(Constructors)等信息,还可以动态创建Java类实例、调用任意的类方法、修改任意的类成员变量值等。Java反射机制是Java语言的动态性的重要体现,也是Java的各种框架底层实现的灵魂
1:获取class对象的四种方式
(1)类名.class,如:com.anbai.sec.classloader.TestHelloWorld.class
(2)Class.forName("全类名")。
(3)ClassLoader.loadClass("com.anbai.sec.classloader.TestHelloWorld");
(4)对象.getClass();

2:利用反射来获取构造方法
(1)getConstructor(参数类型列表)//获取公开的构造方法
(2)getConstructors()//获取所有的公开的构造方法
(3)getDeclaredConstructors()//获取所有的构造方法,包括私有
(4)getDeclaredConstructor(int.class,String.class)//获取指定的
3:利用反射来获取成员变量
(1)getFields()//获取所有公开的成员变量,包括继承变量
(2)getDeclaredFields()//获取本类定义的成员变量,包括私有,但不包括继承的变量
(3)getField(变量名)//获取指定公共属性的Field对象
(4) getDeclaredField(变量名)//获取指定包括私有,不包括继承的Field对象
注意:获取成员变量的值时,如果是非静态成员变量,必须传入对象实例,因为我们要知道调用的是哪个对象的值,静态变量时传入null即可
4:利用反射来获取成员方法
(1)getMethods()//获取所有可见的方法,包括继承的方法
(2)getMethod(方法名,参数类型列表)//获取指定方法的Method对象
(3)getDeclaredMethods()//获取本类定义的的方法,包括私有,不包括继承的方法
(4)getDeclaredMethod(方法名,int.class,String.class)//获取指定包括私有,不包括继承的Method对象
注意:获取调用成员方法时,如果是非静态成员方法,必须传入对象实例,因为我们要知道调用的哪个对象里面的方法,静态方法时传入null即可
实践操作


1835

被折叠的 条评论
为什么被折叠?



