Java基础之反射
反射是在运行时可以动态获取Java类的属性和方法并且可以调用方法和修改属性。
原理是在编译一个新类时生成一个.class文件,里面保存着对应的Class对象。
在类加载相当于Class对象加载。类在第一次使用时才动态加载到JVM。
Class和java.lang.reflect一起对反射提供了支持,reflect主要三个类Field(get,set方法),Method(invoke方法调用与Method对象关联的方法),Constructor(newInstance()创建新对象)用来分别操作这个类的属性,方法和创建新对象。
缺点:
性能开销,因为涉及到动态类型解析,JVM无法对这些代码进行优化,因此反射操作的效率低很多。
原理是在编译一个新类时生成一个.class文件,里面保存着对应的Class对象。
在类加载相当于Class对象加载。类在第一次使用时才动态加载到JVM。
Class和java.lang.reflect一起对反射提供了支持,reflect主要三个类Field(get,set方法),Method(invoke方法调用与Method对象关联的方法),Constructor(newInstance()创建新对象)用来分别操作这个类的属性,方法和创建新对象。
缺点:
性能开销,因为涉及到动态类型解析,JVM无法对这些代码进行优化,因此反射操作的效率低很多。