框架:可以在框架的基础上进行软件开发,简化编码
反射:将类的各个组成部分封装成其他对象
- 反射机制是指在运行状态中,动态获取信息类型及童泰访问实例成员的能力
- 使用反射可以在程运行时创建类的实例及访问其属性和方法
- 提高程序的可扩展性
在Java程序中使用反射基本步骤
1.导入java.reflect包中的相关类
2.获得需要操作的类的Class实例
3.调用Class实例的方法获取Field,Method等实例
4.使用反射API操作实例成员
获取class对象的方式
1.Class.forName("全类名"):将字节码文件加载进内存,返回Class对象
*多用于配置文件,将类名定义在配置文件中,读取文件,加载类
2.类名.class:通过类名的属性Class获取
*多用于参数的传递
3.对象.getClass(); getClass()方法在Object类中定义着。
*多用于对象的获取字节码的方式
结论:同一字节码文件(*.class)在一次程序运行过程中,只会被加载一起,无论通过哪一种 方式获取的class对象都是同一个
如果报错 包名或类名是自己写的一定有错(复制解决)
Java反射常用API
java.lang.Class<T>类
java.lang.relfect.Constructor<T>类
java.lang.reflect.Field
java.lang.reflect.Method类
创建实例
通过反射来创建Java类型的实例有如下两种方式
1.使用Class实例的newInstance()方法创建相关类型的实例
2.使用Constructor实例创建相关类型的实例
调用类的方法
Method类中包含invoke()方法,通过invoke()方法,Method实例可以调用Java类的实例方法和静态方法
Object invoke(Object obj,Object...args);
// Object(对象)
其中 obj是执行该方法的对象,args是执行该方法时传入的参数。
若Method实例表示的是一个静态方法,则obj可以为null