4_关于类的主动使用和被动使用

关于类的主动使用和被动使用

在JVM当中表示两个class对象是否为同一个类存在的两个必要条件:

  • 类的完整类名必须一致,包括包名。
  • 加载这个类的ClassLoader必须相同。

换句话说,在JVM当中,即使这两个类对象(class对象)来源同一个class文件,被同一个虚拟机加载,但只要加载它们的ClassLoader实例对象不同,那么这两个类对象也是不相等的。

对类加载器的引用

JVM必须知道一个类是由系统类加载器还是扩展类加载器,亦或是引导类加载器加载的。如果一个类是由系统类加载器加载的,那么JVM会将这个类加载器的一个引用作为类型信息的一部分保存在方法区,当解析一个类型到另一个类型的引用时,JVM需要保证这两个类型的类加载器是相同的。

Java程序对类的使用分为主动使用和被动使用

主动使用

  • 创建类的实例
  • 访问某个类或接口的静态变量,或者对静态变量赋值
  • 调用类的静态方法
  • 反射
  • 初始化一个类的子类
  • Java虚拟机在启动时被标明为启动类的类
  • JDK7开始提供的动态语言支持

被动使用

除了如上的主动情况,其它使用Java类的方式都被看做是对类的被动使用,都不会导致类的初始化。

posted @   LilyFlower  阅读(11)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· winform 绘制太阳,地球,月球 运作规律
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)
点击右上角即可分享
微信分享提示