反射
利用反射机制动态创建对象,动态调用方法是反射的精髓。
反射:运行时动态获取类的信息,调用类的方法。
获取Class类的方法:
①Class.forName()
②类名.class
③包装类.TYPE
Class c=Integer.TYPE
④对象名.getClass()
String name=”dsoid”
Class c=name.getClass()
Class类 的getDeclaredMethods()方法获取类的所有方法,但不包括继承的方法
Class类的getMethod()方法获取类的所有方法,包括继承的方法
getDeclaredMethods()和getMethod()只能获取普通方法,不能获得构造方法。
通过getConstructors()方法(获取到公有构造方法)和getDeclaredConstructors()方法(获取到所有构造方法)获取构造方法。
反射创建对象的方式:
①通过Class类的newInstance()方法创建对象(类必须有无参构造)
②通过Constructor的newInstance(Object[] args)方法创建对象(指定构造,可有参,可无参),不过要先获取构造列表通过参数指定构造。
反射机制修改属性:如果想要修改类中的私有属性,类中又没有提供get、set方法的话,可以通过反射机制提供的Field类,获取到Field对象,取消对属性的访问控制权限,通过Field的get和set方法修改。