首页 > 其他分享 >4_关于类的主动使用和被动使用

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

时间:2024-03-14 13:24:26浏览次数:12  
标签:Java 被动 JVM 使用 主动 加载

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

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

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

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

对类加载器的引用

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

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

主动使用

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

被动使用

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

标签:Java,被动,JVM,使用,主动,加载
From: https://www.cnblogs.com/lilyflower/p/18072636

相关文章

  • VMwear虚拟机的安装与使用(Win11)
    提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档文章目录一、前言什么是VMware?VMware与Linux二、VWmear下载与安装(1)安装VMware虚拟机软件。(2)按照指引安装完成后,单击“许可证”按钮输入密钥(3)创建RHEL8.3虚拟机。(4)对虚拟机的RHEL8.3系统做快照和恢......
  • Raspberry:Wiringpi的安装及使用
    +++title="Raspberry:Wiringpi的安装及使用"description="Wiringpi的安装及使用"date=2022-05-04T14:01:09+08:00author="chao"draft=falseimage=""math=truecategories=["os"]tags=["raspberry"]+......
  • php使用openssl生成公钥私钥
    1、确保你的PHP环境已经启用了OpenSSL扩展$config=array("digest_alg"=>"sha1","private_key_bits"=>1024,"private_key_type"=>OPENSSL_KEYTYPE_RSA,"config"=>�......
  • flask多表查询操作的两种方法(使用外键和不使用外键)
    1使用外键:在Flask中使用Flask-SQLAlchemy进行连表查询时,可以通过定义模型的外键关系来实现。下面是一个如何定义模型和进行连表查询的示例:首先,定义两个模型:fromflask_sqlalchemyimportSQLAlchemy#初始化SQLAlchemydb=SQLAlchemy()#用户模型classUser(db.Model......
  • MogDB-openGauss default privileges 使用方法
    MogDB/openGaussdefaultprivileges使用方法权限是用户访问数据库对象的首要条件,每个新增用户默认属于PUBLIC角色组成员,也就是具有PUBLIC角色组的权限,但在日常业务使用中,仅仅具有PUBLIC权限是远远不够的,还需要具有额外的权限,在MogDB/openGauss数据库支持的业务中经常需......
  • 三种方式使用纯 CSS 实现星级评分
    本文介绍三种使用纯CSS实现星级评分的方式。每种都值得细品一番~五角星取自ElementPlus的svg资源<svgxmlns="http://www.w3.org/2000/svg"viewBox="0010241024"style=""><pathfill="currentColor"d="M283.84867.8......
  • 在springboot中使用拦截器+JWT验证token的流程
    我的计算机设计大赛的项目需要用到JWT来进行用户身份验证,项目采用springboot技术,因为我没学过springSrcurity所以只能用原生的拦截器+JWT技术进行验证,我是跟着【SpringBoot整合JWT】这篇文章做的,老师讲的很详细跟着一步一步来也可以实现JWT身份验证,但是对于验证过程的整个流程......
  • ZYNQ自定义IP并使用
    目的:自定义一个IP并添加到设计中使用(产生PWM波形)在ZYNQ系统中将许多特定功能的硬件设计模块封装起来称为IP核,类似于库函数。这种方式极大的提高了设计效率。当遇到设计中的一些特殊的需求且官方没有对应的IP时就需要我们自定义IP来使用。 创建步骤:1、创建新IP进入viv......
  • 多线程系列(十九) -Future使用详解
    一、摘要在前几篇线程系列文章中,我们介绍了线程池的相关技术,任务执行类只需要实现Runnable接口,然后交给线程池,就可以轻松的实现异步执行多个任务的目标,提升程序的执行效率,比如如下异步执行任务下载。//创建一个线程池ExecutorServiceexecutor=Executors.newFixedThreadPool......
  • Windows10, 11上,您可以使用以下PowerShell命令来启用Hyper-V功能组件 Windows server 2
    Windows11上,您可以使用以下PowerShell命令来启用Hyper-V功能组件:powershellCopyCodeEnable-WindowsOptionalFeature-Online-FeatureNameMicrosoft-Hyper-V-All这个命令将启用所有与Hyper-V相关的功能组件。请确保以管理员权限在PowerShell中运行此命令。执行以上命令后,系......