-
框架:半成品的软件,可以在框架的基础上进行软件开发,简化代码
-
反射:将类的各个部分封装为其他对象
- 优点:
- 在程序的运行过程中操作这些对象。
- 可以解耦,提高程序的可扩展性。
- 优点:
-
获取Class对象的三种方式:
-
Class.forName("全类名");(多用于配置文件,将类名可以定义在配置文件中,读取文件加载类)
将字节码文件加载进内存
-
类名.class:(多用于参数的传递)
通过类名的属性获取
-
对象.getClass() (多用于对象的获取字节码方式)
通过对象方法获取,该方法在Object中有定义
-
结论:
同一个字节码文件(.class)在一次运行过程中,只会被加载一次,
不论用什么方式获取到的Class都是同一个
-
-
Class对象的功能:
-
获取功能:
-
获取成员变量s:
Filed[] getFiles() : 获取所有public成员变量
Field getFiled(String name) : 获取指定名称的public成员变量
Filed[] getDeclaredFiles() : 获取所有的成员变量
Field getFiled(String name) : 获取制定名称的成员变量
-
获取构造方法s:
Constructor[] getConstructors()
Constructor getContructor(class<?> ...parmeterTypes)
Constructor[] getConstructors()
Constructor getContructor(class<?> ...parmeterTypes)
-
获取成员方法s:
Method[] getMethods() : 获取所有的成员方法
Method getMethod(String name, Class parmetertypes ) : 获取单个成员方法
Method[] getDeclaredMethods() : 获取所有的成员方法
Method getDeclaredMethod(String name, class parmetertypes ) : 获取单个成员方法
-
获取类名:
String getName() : 获取类名
-
-
-
Field:成员变量
- 操作: 1. 设置值: void set(Object obj, Object value) 2. 获取值 : get(Object obj) 3. 忽略访问权限修饰符的安全检查(暴力反射):setAccessible(true)
-
Constructor:构造方法
-
操作:
-
创建对象:T newInstance(Object..., initargs)
-
创建空参对象:T newInstance() == Class.newInstance
-
-
-
Method:成员方法
- 操作:
-
执行方法:Object invoke(Object obj, Object... args)
-
获取方法名称:String getName
-
- 操作: