二.6 java高级-反射
1.概念:以前我们根据类来得到对象,现在我们可以根据对象类得到类。根据Class对象得到类的信息。在运行时动态的获取类的信息,动态调用类的方法
2.获取Class对象的三种方法:(1)对象.getClass();(2)类名.class;(3)Class.forName(“全限定类名”)
3.反射API:Class类:创建Class对象,获取类信息 Field类:获取和设置类中的字段 Method类:获取方法信息或者执行某个方法 Constructor类:获取构造方法
(1)Class属于java.lang.Class Field,Method,Constructor都属于java.lang.reflect 包
(2)Class类的方法:
forName():获得Class对象(对类进行初始化)
newInstance():创建一个实例(对类进行实例化)
getFields():获得所有公有的属性对象/getDeclaredFields():获得所有属性对象
getConstructors():获得所有的公有构造方法/getDeclaredConstructosr():获得该类所有构造方法
getMethods():获得所有公有的方法/getDeclaredMethods():获得所有方法
(3)Method类的方法:
invoke(Object obj,Object ... args) 传递object对象及参数调用该对象对应的方法
5.创建对象的两种方法
(1)使用Class对象的newInstance方法创建实例 只能通过这个类的默认构造方法创建对象。要求:对应类有默认的构造方法
(2)使用Class对象获取指定的Constructor对象,再调用Constructor对象的newInstance方法创建实例 这种方法可以选定构造方法创建实例
6.Method的invoke方法