Java 为什么要用反射、成员变量、局部变量、静态变量的区别

版权声明:本文为HCG原创文章,未经博主允许不得转载。请联系[email protected] https://blog.csdn.net/qq_39455116/article/details/82964743

Java反射

有什么作用?

一句话概括就是使用反射可以赋予jvm动态编译的能力
否则类的元数据信息只能用静态编译的方式实现,例如热加载,Tomcat的classloader等等都没法支持

我们为什么要使用反射?

静态编译:在编译时确定类型,绑定对象即通过。
动态编译:运行时确定类型,绑定对象。动态编译最大限度地发挥了Java的灵活性,
		体现了多态的应用,可以减低类之间的耦合性。
我们可以明确的看出动态编译的好处,而反射就是运用了动态编译创建对象。
当我们的程序在运行时,需要动态的加载一些类这些类可能之前用不到所以不用加载到jvm,
而是在运行时根据需要才加载,

反射的用途:

  1. 获取类、类的构造方法、成员变量、成员方法、Mian方法、
  2. 通过反射运行配置文件内容
    运用反射。我们可以相应的增加一个配置文件,在里面记录包中所有的类名,
    包中类增加时就加一个类名,删除时就删除一个类名。
    让main方法去读取这个配置文件中的类名,通过反射获得实例,完全不用我们去修改main方法中的代码
  3. 反射方法的其它使用之—通过反射越过泛型检查

SSM框架使用反射的地方:

	比如spring xml配置的bean-->转化为对象
	mybatis的resultMap映射等等   

2.什么是成员变量、局部变量、静态变量

 成员变量随着对象的创建而存在,随着对象被回收而释放。

 静态变量随着类的加载而存在,随着类的消失而消失。
 成员变量存储在堆内存的对象中,所以也叫对象的特有数据。

 静态变量数据存储在方法区(共享数据区)的静态区,所以也叫对象的共享数据

 同时Java的方法又可以分为,成员方法(普通方法)、全局方法(static)、构造方法

猜你喜欢

转载自blog.csdn.net/qq_39455116/article/details/82964743