reflection反射
-
动态语言:运行时可以改变自身结构的语言
-
反射是java被视为动态语言的关键
反射优点
-
实现动态创建对象和编译,体现出很大的灵活性
反射缺点
-
对性能有一定影响
判断两个实体是不是同一个类
打印实体的hashcode
反射流程
实例化对象 -> getClass()方法(照镜子) -> 得到完整的包类名称
Class类
类加载完后会产生一个Class类型的对象,这个对象包含了完整的类的结构信息
-
一个类只有一个Class对象
-
Class本身也是一个类,只能由系统建立对象
Class类的创建方式
-
通过对象获得
-
forname获得
-
通过类名.class获得
类主动引用时才会发生类的初始化
-
new一个类的对象
-
调用类的静态成员(除了final常量)和静态方法