反射:框架设计灵魂 框架:半成品软件,可以在框架基础上进行软件开发,简化编码 反射:将类的各个组成部分封装我其他对象,这就是反射机制 好处: 1.可以在程序运行过程中,操作这些对象 2.可以解耦,提高程序的可扩展性 获取Class对象的方式: 1.Class.forName(“全类名”);将字节码文件加载进内存,返回Class对象 (多用于配置文件将类名定义在配置文件中,读取文件加载类) 2.类名.Class;通过类名的属性.class获取(多用于参数传递) 3.对象.getClass();getClass()方法在Object类中定义着( 多用于对象的获取字节码的一个方式) 结论: 同一个字节码文件(*.class)在程序巡行的过程中,只会被加载一次,不论通过那一种方式获取Class对象都是同一个。 Class对象的功能: 获取功能: 1.获取成员变量们: Field[]getFields() :获取所有public修饰的成员变量
FieId[ ] getDeclaredFieIds()获取所有成员变量,不考虑修饰符 FileId getDeclaredFieId(String name); 2.获取构造方法们: Constructor<?>[ ] getConstructors() Constructor<T> getConstructor(类<?>… parameterTypes) Constructor<T> getDeclaredConstructor(类<?>… parameterTypes) Constructor<?>[ ] getDeclaredConstructors(); 3.获取成员方法们 Method[ ] getMethod() Method getMethod(String name,类<?>… parameterType) Method[ ] getDeclaredMethod() Method getDeclaredMethod(String name,类<?>… parameterType) 4.获取类名 String getNmae(); Field:成员变量 操作: 1.设置值 void set(Object obj,Object value); 2.获取值 get(Object obj) 3.忽略访问权限修饰符的安全检查 setAccessible(true):暴力反射 Constructor:构造方法 创建对象: newInstance(Object… initargs) 如果使用空参数构造方法创建对象,操作可以简化Class对象的newInstance方法 来源:https://www./content-1-312401.html |
|