反射

reflection反射

反射就是把java类中的各种成分映射成一个个的Java对象

  • 动态语言:运行时可以改变自身结构的语言

  • 反射是java被视为动态语言的关键

反射优点

  • 实现动态创建对象和编译,体现出很大的灵活性

反射缺点

  • 对性能有一定影响

判断两个实体是不是同一个类

打印实体的hashcode

反射流程

实例化对象 -> getClass()方法(照镜子) -> 得到完整的包类名称

Class类

类加载完后会产生一个Class类型的对象,这个对象包含了完整的类的结构信息

  • 一个类只有一个Class对象

  • Class本身也是一个类,只能由系统建立对象

Class类的创建方式

  • 通过对象获得getClass();

  • forname获得

  • 通过类名.class获得

类主动引用时才会发生类的初始化

  • new一个类的对象

  • 调用类的静态成员(除了final常量)和静态方法

加载器

  • 引导类加载器:负责Java平台的核心库,无法直接获取

  • 扩展类加载器:负责jre/lib/ext目录下的jar包或 -D java.ext.dirs下的jar包装入工作

  • 系统类加载器:负责java -classpath或 -D java.class.path下的类与jar包装入工作,是最常用的类

双亲委派机制:运行时根加载器优先

创建运行时类的对象

反射调用方法

  • 获取:Method方法取得Method对象

  • 调用:Class对象的newInstance()方法

  • 使用Object invoke进行调用

invoke:激活的意思

关闭权限检测:SetAccessible(true);

posted @ 2023-06-25 14:54  Hmzzz2  阅读(4)  评论(0编辑  收藏  举报