类的状态

Himall商城每个消息操作的状态类、店铺信息类、用户信息类 阅读详情

package Mycompiler;
//java_10
// file name: ClassDeclaration.java
//10******************************************************************************
//******************************************************************************
     /**
      * 该类代表了一个java类声明. 它是关于二进制或者源定义的。 按需装载,
      * 类定义是持续渐进的.类的定义按阶段获取
      * 状态域描述了类定义的阶段, see Constants.java
            * CS==CLASS
      * CLASS_UNDEFINED=0 - 该定义尚未被装载
      * CLASS_UNDECIDED=1 - 二进制定义被装载, 但是尚未清楚源定义是否被装载
      * CLASS_BINARY   =2 - 被装载的二进制文件(binary file)
      * CLASS_SOURCE   =3 - 该类从源文件中被装载, 也知道类型信息
      * CLASS_PARSED   =4 - 但是类文件(编译单元)尚未被编译
      * CLASS_CHECKED  =5 - 该类从源文件中导入 并且 已经经过类型检查
      * CLASS_COMPILED =6 - 该类已经被检查,编译,和输出
      * CLASS_NOTFOUND =7  - 找不到类定义
      */
         // 顶层类(toplevel class)==外部类
     public final class ClassDeclaration implements Constants { //访问修饰符public
         int status;
         Type type;
         ClassDefinition definition;
         public ClassDeclaration(){ // just as default constructor

               }
         public ClassDeclaration(Identifier name) {
      this.type = Type.tClass(name);
         }
        //获取该类的状态,上述的8种状态之一
         public int getStatus() {
      return status;
         }
         //获取该类的名字
         public Identifier getName() {
            return type.getClassName(); //获取类名
         }
         //获取该类的类型
         public Type getType() {
                     System.out.println("ClassDeclaration.java : type="+type);
      return type;
         }

         public boolean isDefined() {  //判断该类是否被定义
      switch (status) {
                        //如果是下面这4种状态,则该类是被定义的
        case CLASS_BINARY:
        case CLASS_PARSED:
        case CLASS_CHECKED:
        case CLASS_COMPILED:
          return true ;
      }
      return false;
         }
            //获取该类的定义,如果未定义则返回null
         public ClassDefinition getClassDefinition() {
      return definition;
         }
         /**
                * (环境)如果通过之前的方法能够成功的查找到该类,则用它来标记
          */
         private boolean found = false;
         /**
          * 获取该类的定义,如果该类尚未定义则装载该定义,
          * 否则装载此类将抛出各种各样的异常
          */
         public ClassDefinition getClassDefinition(Environment env)throws ClassNotFound {
      if (tracing) env.dtEvent("getClassDefinition: " +getName() + ", status " + getStatus());

      // 调用getClassDefinition()函数是重复的
      // 这样的检查让它更快,它同样也避免了重复。
                        //调用basicCheck()方法变得毫无意义.
      if (found) {
          return definition; //返回类定义
      }
      for(;;) {
          switch (status) {
              case CLASS_UNDEFINED:
              case CLASS_UNDECIDED:
              case CLASS_SOURCE:
           env.loadDefinition(this);
           break;

              case CLASS_BINARY:
              case CLASS_PARSED:
           if (!definition.isInsideLocal()) {
                                             // 块中的类, 包含匿名类,当它的成员被检查的时候,它自身也将被检查
                                             definition.basicCheck(env); //类型检查
           }
           found = true;
           return definition;

              case CLASS_CHECKED:
              case CLASS_COMPILED:
           found = true;
           return definition;

              default:
           throw new ClassNotFound(getName());
       }
      }
         }


//获取该类的定义,如果类未定义,则装载该定义,装载一个类可能会抛出各种异常,在该类上执行no basicCheck()函数
         public ClassDefinition getClassDefinitionNoCheck(Environment env) throws ClassNotFound {
      if (tracing) env.dtEvent("getClassDefinition: " + getName() + ", status " + getStatus());
      for(;;) {
          switch (status) {
              case CLASS_UNDEFINED:
              case CLASS_UNDECIDED:
              case CLASS_SOURCE:
           env.loadDefinition(this); //装载定义
           break;

              case CLASS_BINARY:
              case CLASS_PARSED:
              case CLASS_CHECKED:
              case CLASS_COMPILED:
           return definition;

              default:
           throw new ClassNotFound(getName());
       }
      }
         }

       //设置类定义
         public void setDefinition(ClassDefinition definition, int status) {
      // 完善性检验
      // 名字的定义应该与声明相匹配.
      if ((definition != null) && !getName().equals(definition.getName())) {
          throw new CompilerError("setDefinition: name mismatch: " +this + ", " + definition);
      }
      this.definition = definition;
      this.status = status;
         }
         //等价性
         public boolean equals(Object obj) { //Object是原始类(primordial class)
      if ((obj != null) && (obj instanceof ClassDeclaration)) {
          return type.equals(((ClassDeclaration)obj).type);
      }
      return false;
         }
         //转换成字符串
         public String toString() {
      String name = getName().toString();
      String type = "type ";
      String nested = getName().isInner() ? "nested " : "";
      if (getClassDefinition() != null) {
          if (getClassDefinition().isInterface()) {
       type = "interface ";
          } else {
       type = "class ";
          }
          if (!getClassDefinition().isTopLevel()) {//外部类==顶层类
       nested = "inner ";   //内部类
       if (getClassDefinition().isLocal()) {
           nested = "local "; //局部类
           if (!getClassDefinition().isAnonymous()) { //匿名类
        name = getClassDefinition().getLocalName() +
            " (" + name + ")";
           }
       }
          }
      }
      return nested + type + name;  //   type: String
         }
     }

2025.06.18【转录组】|Ribo-seq/small RNA数据分析:rRNA和smRNA比对率统计全流程 本文介绍了一种自动化统计rRNA/smRNA比对率的方法,用于评估Ribo-seq或small RNA测序数据的质量。主要内容包括:分析原理(比对率定义、参考序列来源)、实践流程(构建索引、比对统计)以及结果可视化方法。通过Python和R脚本实现自动化处理,可生成汇总表格和柱状图。比对率结果能反映样品污染程度,建议控制在20%以下。该流程有助于快速评估测序质量,为后续分析提供可靠依据。文中还提供了常见问题解决方案和脚本示例,适用于生物信息学标准化质控环节。 阅读详情

相关推荐

PLC与变频器联动控制:从开关量、模拟量到通讯的接线与编程实战

在工业自动化系统中,电机调速控制是核心需求之一,其关键在于实现可编程逻辑控制器(PLC)与变频器之间的可靠联动。其基本原理是通过PLC输出控制信号,由变频器接收并驱动电机按设定速度运行。这项技术的核心价值在于实现电机的软启停、精确调速与节能控制,广泛应用于风机、水泵、传送带及精密张力控制等场景。其中,开关量控制以其接线简单、抗干扰能力强的特点,成为基础且可靠的方案;而模拟量控制则能实现无级平滑调速,满足更高精度的工艺要求。本文以西门子、三菱等主流品牌为例,深入解析了这两种主流控制方式的硬件接线、参数设置与梯

1271

什么是类的状态/对象的状态?

鶸的博客 1087

矢量网络分析仪(矢网)组成和原理简介

一、概述 矢量网络分析仪是一种常见的射频测量仪器,主要用来测量高频器件、电路及系统的性能参数,如线性参数、非线性参数、变频参数等。 1.1 分类 矢量网络分析仪一般以频率来划分,截止频率越高,价格也越贵; 根据测试端口的数量可分为:双端口、 3 端口、 4 端口、 6 端口; 常见的厂家有:美国的安捷伦( Agilent)、德国的罗德与施瓦茨( R&S) , 国内的有南京普纳和中电 41 所。 1.2 常用功能 常用的测试器件有:功分器、合路器、滤波器、衰减器、天线、电缆、放大器、混频器、双工器、耦

大音希声 5万+

java知识2 类和对象【多测师】

JAVA面向对象语言、支持以下的概念: 多态 继承 封装 抽象 类 对象 实例 方法 重载 对象:对象是类的一个实例、有状态和行为 例如:莉斌是一个对象 她的状态有:名字、中国人、黄种人 行为有:吃、喝、睡、说话 类:类是一个模板、而具体的每个人都为该类的对象 JAVA中的类: 局部变量:在方法、构造方法或者语句块中定义的变量被称为局部变量。变量声明和初始化都是在方法中,...

多测师_王sir的博客 224

AUTOSAR AP——SM模块

对AUTOSAR AP中状态管理模块SM,从模块定义、总结等多方面进行了介绍。

weixin_43627682的博客 287

【Codex】Codex安装+DeepSeek API接入;无需登录,手把手带你使用codex

好多人使用codex时都卡在验证码登录那一步,今天就来介绍一种方法,不需要登录ChatGPT的账号,自然也就不需要手机验证码了;接入DeepSeek的api,一样可以丝滑使用codex;记录从零开始安装使用codex以及DeepSeek API接入的整个过程。不需要登录openAI;

AnChenliang_1002的博客 3552

面向对象设计之三 类的状态空间和行为

类的状态空间和行为 1 类的状态空间与行为        一个类表示一种共同的抽象性,这种抽象性是属于这个类的所有个体对象的共有属性。上面这个类的说明十分常见,但这句话的真正意义是什么呢?        抽象性含义是指我们在软件对象中不必考虑到真

zzulp的专栏 1969

【短距离通信】【WiFi】精讲802.11n/ac/ax mpdu和ampdu最大长度

在 Wi-Fi 标准(802.11n、802.11ac 和 802.11ax)中,和是数据传输的核心概念。理解它们各自的作用以及不同标准下的最大长度限制,有助于深入了解 Wi-Fi 的性能优化机制。以下是对802.11n802.11ac和802.11ax中MPDU和A-MPDU最大长度的详细技术分析和对比。1. MPDU 和 A-MPDU 的基本概念MPDU 是经过 MAC 层处理后的数据单元,主要由MAC层数据帧和物理层的传输头部(PHY headers)组成。

风云说通信 1108

【UML】——状态图

一、状态图 状态图用来描述一个特定对象的所有可能状态以及由于各种事件的发生而引起的状态之间的转移 1、状态图的图符 状态:矩形,四角为圆弧 转移:箭头 起点:一个黑点 终点:一个圈加一个黑点 2、状态机 (1)状态机是这样一种行为,它描述了一个对象或一个交互在生命周期内响应事件所经历的状态序列 单个类或一组类之间的资额做的行为可以用状态机来描述 一个状态机涉及到一些其他...

张兴军的博客 3万+

基于知识图谱的智能决策系统

作者:禅与计算机程序设计艺术 1.简介 知识图谱(Knowledge Graph)最早由美国斯坦福大学的Jure Sifne等人于2013年提出,它是一个用于存储、整理和推理复杂多变的网络结构信息的数据模型。它的基本特征是每个事实都有一个统一的标识符ID,并且可以以图形的方式展示各种关系及其边缘。因此,

AI天才研究院 2186

【技能】OpenClaw Memory 与 MemOS 两种 AI 记忆方案深度解析

摘要:本文对比了两种AI记忆系统方案。OpenClaw Memory是轻量级记忆助手,内置SQLite存储,支持语义搜索,部署简单成本低,适合日常对话记忆需求。MemOS是自学习系统,通过Neo4j和Qdrant实现技能自进化,但需部署4套服务,门槛高成本大。建议普通用户选择OpenClaw Memory,技术玩家可逐步尝试MemOS。两种方案各具优势,需根据实际需求选择。

海兰 201

Thread类的方法和线程的状态

Thread类的方法和线程的几种状态 yield() 调用该方法让当前线程让出CPU,让CPU去执行其他线程, 不会释放锁并且让该线程回到就绪状态而不是阻塞状态 。yield()方法只会让该线程同优先级的线程得到执行机会。 join() 无参构造方法调用表示等待该线程结束。 sleep() 调用sleep()方法,会阻塞该线程,且且不会释放锁 wait()和notify() 一般配合...

shixing的博客 300

万字长文,YOLOv8 yaml 文件解析 | 一文搞定 YOLOv8 分类任务,检测任务,分割任务,关键点任务

YOLOv8 yaml 文件解析 | 一文搞定 YOLOv8 分类任务,检测任务,分割任务,关键点任务

Coding... 1万+

CSS链接伪类:超链接的状态

一、状态: a:link{属性:值;} 链接默认状态 a:visited{属性:值;} 链接访问之后的状态 a:hover{属性:值;} 鼠标放到链接上显示的状态 a:active{属性:值;} 链接激活的状态 :focus{属性:值;} 获取焦点 二、注意点: a:link{属性:值;} a{属性:值...

weixin_30550271的博客 1255

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

React类组件的状态

setState修改状态更新可能是异步的,会批量推迟更新,在调用setState后直接访问state是还没有更新的状态,在生命周期函componentDidUpdate或者setState的第二个参数的回调函数中访问到的state才是更新完后的状态,而且React出于性能考虑会合并多个setState。在react18之前,类组件的状态更新setState在setTimeOut、setInterval这样的异步逻辑中执行,react会同步更新状态和dom,在同步逻辑中则会异步更新状态和dom。

Sirius小鑫的博客 1412

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

Hibernate中POJO类的状态

POJO类所处的状态 POJO类所处的状态有三种: 瞬时态(Transient):对象保存在内存之中,并没有在数据库之中进行存储。也就是说如果对像一直没有存储,那么就有可能被GC回收,回收之后就象不存在一样。 持久态(Persistent):将内存中的对象保存在数据库中,或者某一个对象通过数据库读取,此时的Session如果没有关闭,那么就是持久态。持久态的最大特征是属性的变化将引起数据库的变化...

Nicholas_GUB的博客 1524

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

JavaEE-Thread类常见方法及线程的状态

需要给标志位上加 volatile 关键字(这个关键字的功能后⾯介绍)

2301_80418043的博客 1021

ClassDeclaration.java类的状态

ClassDeclaration.javaJava中类的8种状态1. CLASS_UNDEFINED=0     //类定义尚未装载2. CLASS_UNDECIDED=1    //二进制定义被装载,但是源文件的定义是否被装载尚未知道3. CLASS_BINARY=2             // 二进制文件已经被装载4. CLASS_SOURCE=3          //

raphaelxia的专栏 1567

高级选择器与伪元素的状态类

伪类选择器的状态类 一、:checked 该伪类表示表单元素被选中的状态,可以用于单选按钮,复选框等元素上 ,该元素是一个可以设置一个默认被选中的状态。也可以用在一个input的标签里面来设置。 二、:active 该伪类表示表单元素、链接等元素被激活的状态,此处被激活的概念比较特殊(对于输入框而言,是鼠标左键按下且未抬起的时候;对于a元素,也是鼠标左键按下且未抬起的时候) 三、:hover 该伪...

lsy01的博客 260

类的状态转化

java文件经过编译后转化为跨平台的二进制字节流,为class文件。 class定义了类接口的形式 在经过加载 连接和初始化过程后 可被运行时识别的类型和接口就在虚拟机中形成了。 class文件格式 magic魔数 固定OXcAFEBABE minor_version 此版本 major_version 主版本 constant_pool_count 常量池个数 ac

菜鸡旭旭 355

python学习笔记6.8-类的状态机

说起状态机,很多人可能就要不屑一顾了,无非就是switch case语句嘛,或者是if … else if … else 语句嘛,这一类程序员写的状态机只能说实现了功能,而在代码的优越性来看,简直就是不忍直视。对于面向对象的编程语言,例如python,最直观的方式就是利用类来表达状态,从而达到状态机的实现。

锦小年的博客 4万+

WebView的状态设置类WebSetting

这篇文章主要是对官方文档的翻译。不当之处希望指正。 WebSetting的官方解释为: Manages settings state for a WebView. When a WebView is first created, it obtains a set of default settings. These default settings will be returned from...

changjinglubeipan的博客 1348

Android 与手机通讯相关的状态和信息的类 TelephonyManager

Android里获取运行商的类和方法,以及号码段与运营商的对应关系很容易就能搜到,但是状态码比较多一时很难记住,我把搜到的资料归纳整理了一下,至少用到时能快速找到对应的方法与状态,希望这个答案能让你满意。   1、Android里手机通讯相关的状态和信息的类 TelephonyManager:     TelephonyManager类主要提供了一系列用于访问与手机通讯相关的状态和信息的ge

咲臣 2929

【多线程】Thread类及其常用的方法+线程的状态

Java多线程基础, Thread类,run方法,sleep方法,线程的状态

qq_48584557的博客 738

【JavaEE初阶】Thread 类及常见方法、线程的状态

Thread 类是 JVM 用来管理线程的⼀个类,换句话说,每个线程都有⼀个唯⼀的 Thread 对象与之关联。 每个执行流,也需要有⼀个对象来描述,类似下图所示,Thread 类的对象就是用来描述⼀个线程执行流的,JVM 会将这些 Thread 对象组织起来,用于线程调度,线程管理。

m0_61876562的博客 1638
上一篇: ClassFile
下一篇: 类的状态
raphaelxia
博客等级 码龄22年 6粉丝 112原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值