Java反射
有什么作用?
一句话概括就是使用反射可以赋予jvm动态编译的能力
否则类的元数据信息只能用静态编译的方式实现,例如热加载,Tomcat的classloader等等都没法支持
我们为什么要使用反射?
静态编译:在编译时确定类型,绑定对象即通过。
动态编译:运行时确定类型,绑定对象。动态编译最大限度地发挥了Java的灵活性,
体现了多态的应用,可以减低类之间的耦合性。
我们可以明确的看出动态编译的好处,而反射就是运用了动态编译创建对象。
当我们的程序在运行时,需要动态的加载一些类这些类可能之前用不到所以不用加载到jvm,
而是在运行时根据需要才加载,
反射的用途:
- 获取类、类的构造方法、成员变量、成员方法、Mian方法、
-
通过反射运行配置文件内容
运用反射。我们可以相应的增加一个配置文件,在里面记录包中所有的类名,
包中类增加时就加一个类名,删除时就删除一个类名。
让main方法去读取这个配置文件中的类名,通过反射获得实例,完全不用我们去修改main方法中的代码
- 反射方法的其它使用之—通过反射越过泛型检查
SSM框架使用反射的地方:
比如spring xml配置的bean-->转化为对象
mybatis的resultMap映射等等
2.什么是成员变量、局部变量、静态变量
成员变量随着对象的创建而存在,随着对象被回收而释放。
静态变量随着类的加载而存在,随着类的消失而消失。
成员变量存储在堆内存的对象中,所以也叫对象的特有数据。
静态变量数据存储在方法区(共享数据区)的静态区,所以也叫对象的共享数据
同时Java的方法又可以分为,成员方法(普通方法)、全局方法(static)、构造方法