Java枚举特殊类及其静态常量实例

radsystems的激活(破解)和使用 上个文章讲述了radsystems的下载,但是只有30天的免费使用权,这篇文章将会讲解如何破解激活radsystems。注意:如果不想去官网下载的话,点击安装包的exe文件。不要急,打开我给你们的安装包,点击crack。如果提示done则完成(我的是激活过的)注意:这是8.7版本的。点击generate。 阅读详情


1.作用
为什么要有枚举?

  问题: 要定义星期几或性别的变量,该怎么定义?假设用1-7分别表示星期一到星期日,但有人可能会写成int weekday = 0;或即使使用常量方式也无法阻止意外.
  枚举就是要让某个类型的变量的取值只能为若干个固定值中的一个,否则,编译器就会报错!
  枚举可以让编译器在编译时就可以控制源程序中填写的非法值,普通变量的方式在开发阶段无法实现这一目标.
 
2.普通类模拟其原理
  SUN和MON的示例:元素相当于实现了遍历类的抽象方法的子类;

 public class EnumTest {
  public static void main(String[] args) {
   WeekDay1 weekDay=WeekDay1.MON;
   System.out.println(weekDay.nextDay());
  }
 }
  
  public abstract class WeekDay1 {
  private WeekDay1(){}
  
//  元素定义为有关键字的内部类
  public final static WeekDay1 SUN=new WeekDay1(){
   public WeekDay1 nextDay(){
    return MON;
   }
  };
  public final static WeekDay1 MON=new WeekDay1(){
   public WeekDay1 nextDay(){
    return SUN;
   }
  };
  
  public abstract WeekDay1 nextDay();
  
 /* public final static WeekDay SUN=new WeekDay();
  public final static WeekDay MON=new WeekDay();
  public WeekDay nextDay(){
   if(this == SUN){
    return MON;
   }else{
    return SUN;
   }
  }*/
  
  public String toString(){
   return this == SUN?"SUN":"MON";
  }
 }

  
模拟可知:
 (1)内部元素都是静态常量! 
 (2)枚举也是抽象类,可以建立抽象方法返回本身类型;
 (3)每一个静态常量元素都可以实现抽象方法,成为一个实例对象!
  知识扩展:通过抽象方法nextDay()重载,每一个枚举元素都实现为一个类,简化了if-else的书写;

 

3. jdk1.5枚举的建立
关键字 enum
  枚举就是要让某个类型的变量的取值只能为若干固定值之中的一个,其中的每一个元素都是该类的一个对象!相当于内部类.
  定义枚举类的关键字enum,
  示例:
 public enum WeekDay{
  SUN,MON,TUE,WED,THI,FRI,SAT
 }

 

4.enum的方法和元素调用enum类的构造方法

四大重点方法:
枚举元素.name() 
枚举元素.ordinal() 
enum类.valueOf("args") 

enum类.values("args")


示例:

public class EnumTest {

 public static void main(String[] args) {
  
  //取出enum类中的元素;
  WeekDay weekDay2=WeekDay.FRI;
  System.out.println(weekDay2);//自动toString();
  //得到元素名称;
  System.out.println(weekDay2.name());
  //得到具体元素的下标位[];
  System.out.println(weekDay2.ordinal());
  //通过字符串返回获得对应enum元素;
  System.out.println(WeekDay.valueOf("SUN").toString());
  //不能直接遍历enum,但可转换成数组,方法.values()
  System.out.println(WeekDay.values().length);//遍历元素数组的长度
 }
 
// 定义枚举类的关键字enum,定义后内部元素静态加载完毕;
 public enum WeekDay{
  SUN(1),MON(),TUE,WED,THI,FRI,SAT;//可以给元素加构造方法,给元素类加构造方法后,必须有;号.
  //加载enum后,会静态遍历一次,每个静态常量都会依次调用父类的构造方法;
  //当有多个构造方法时,还可以构建对应的参数(如这里SUN(1))方式选择每个元素具体调用哪个构造方法.
  private WeekDay(){System.out.println("first");}
  private WeekDay(int day){System.out.println("second");}
 }
}


 

5.实现带有抽象方法的枚举
 红绿灯的实现示例:

  enum TrafficLamp{
  
  RED(30){
   public TrafficLamp nextLamp() {
    return YELLOW;
   }   
  },
  
  YELLOW(40){
   public TrafficLamp nextLamp() {
    return GREEN;
   }
  },
  
  GREEN(45){
   public TrafficLamp nextLamp() {
    return RED;
   }
  };
  
  public abstract TrafficLamp nextLamp();//抽象类不写body
  private int time;
  private TrafficLamp(int tiem){this.time = time;}
  
 }

 public class EnumDemo {
  public static void main(String[] args) {
   System.out.println(TrafficLamp.RED.nextLamp());
   System.out.println(TrafficLamp.RED.nextLamp().getTime());
   
  }
 }

 

Agent 团队管理手册:如何设定目标、分配角色与解决冲突 本文从Agent团队的底层逻辑出发,完整讲解了Agent团队管理的三大核心模块:目标设定(分层拆解+对齐校验)、角色分配(能力匹配+最优算法)、冲突处理(分类处理+仲裁投票),并提供了可直接运行的完整代码示例。通过本文的方法,你可以快速搭建一个高效协作的Agent团队,大幅提升复杂任务的完成效率和准确率。Agent团队是未来AI应用的核心形态,现在正是落地的黄金期,建议你从一个小场景开始动手实践,逐步优化自己的Agent团队管理方法论。 阅读详情

相关推荐

基于 Python 的 LIF 模型:探索神经元同步与小世界网络

首先,我们定义了一个LIFNeuronself.soma.L = self.soma.diam = 12.6157 # 固定神经元形状self.cm = cm # 电容self.V_rest = V_rest # 静息电位self.V = V_rest # 初始化膜电位在初始化过程中,每个神经元被赋予初始的静息电位,并且其膜电位会在后续的模拟过程中动态变化。

qq_36224726的博客 1424

Java 枚举(enum) 详解7种常见的用法

JDK1.5引入了新的类型——枚举。在Java中它虽然算个“小”功能,却给我的开发带来了“大”方便。 大师兄我【大师兄】又加上自己的理解,来帮助各位理解一下。 用法一:常量 在JDK1.5之前,我们定义常量都是:public static final....。现在好了,有了枚举,可以把相关的常量分组到一个枚举类型里,而且枚举提供了比常量更多的方法。 Java代码 publ...

请叫我大师兄 88万+

计算机考研常见面试题

写在前面 本人参加20考研,由于复试没有具体要求会问哪几门课,所以我就找了网上一些常见的计算机专业的面试题,整理如下 主要结构: 数据库 软件工程 操作系统 计算机组成原理 计算机网络 数据结构 C++ Java 数据库 1、数据:数据库中存储的基本对象。 数据库:长期存储在计算机内的、有组织的、可共享的数据集合。 数据库管理系统:专门用于建立和管理数据库的一套软件。对外部程序提供访问数据库的方法,对内进行数据管理。 数据库系统:与和数据库相关的整个系统,一般由数据库、数据库管理系统、应用程序、数

qq_38841618的博客 2万+

JAVA枚举类常量 调用_java枚举常量类使用

枚举作为常量类使用多种方式、前后端分离使用;为了前端 统一调用,特别使用了接口以及枚举反射,将枚举工具类作为标签开放于前端;保证多个枚举常量类,不用建立一个枚举类处理。如果后台一般使用可以使用枚举里面自定义静态方法,当然一般情况下使用不到,如果需要最好各自将需用的枚举类里面自定义方法使用。保证一定的效率性。如果不想使用反射的小伙伴,可将所有的状态类加入一个枚举类;也可使用多个枚举类;将枚举类作为标...

weixin_28707365的博客 1759

一文解读DeepSeek训练数据集

本文重点以DeepSeek为例,详细介绍预训练数据集相关内容。大语言模型LLM(如DeepSeek、ChatGPT、文心一言等)的“智慧”源于它们学习的海量数据集。简单来说,数据集就是模型的“知识库”,通常由互联网公开的文本、图片、视频等。这些数据需满足两个特点:规模大和多样性。规模大是指数据量可达千亿级词汇,让模型学习复杂规律;多样性则涵盖多领域(如科技、文学)、多语言、多形式(对话、新闻),帮助模型适应不同场景。例如,训练数据中既有百科知识,也有日常对话,模型才能既解答专业问题,又能闲聊。

u013891230的博客 7089

GX Works2系统启动失败排查指南:从环境配置到修复方案

在工业自动化与PLC编程调试中,软件启动异常是常见的工程痛点。当开发工具因系统环境配置不当而频繁报错时,往往不是简单的重启能解决的。运行库缺失、区域设置错误、临时目录失效或系统服务被禁用,都可能导致编程软件无法完成初始化流程。掌握从基础环境检查到系统组件修复的系统性排查思路,是提升工控开发效率的关键能力。本文从软件初始化原理出发,结合Windows系统维护实践,梳理一套适用于工业软件启动故障的通用诊断方法,并自然聚焦到三菱GX Works2常见启动失败问题的实际处理,帮助工程师快速定位并解决环境性故障,保障

weixin_42567046的博客 464

kotlin : 注解(Annotation):枚举类(enum)与@IntDef @StringDef与静态常量

Java / kotlin注解定义对比: //java 注解 @Retention(RetentionPolicy.RUNTIME) @Target({ElementType.METHOD}) public @interface Test {} //kotlin 注解 @Target(AnnotationTarget.VALUE_PARAMETER, AnnotationTarget.FIELD...

火星男孩的分享空间 1万+

二、ROS2完成Docker容器和宿主机通信,使用ros2 topic list看到,但是无法echo

如果容器和主机权限不一致,则会导致无法通信(我的代码中,docker容器是root,宿主机是普通用户),虽然可以查询到相关话题,但是订阅后没有消息输出。比如,docker容器创建了一个共享内存,其所有者为docker容器用户root,当宿主机去访问的时候,由于用户不同,没有权限访问,也就无法进行信息传递。该方法只是临时修改共享内存的权限,每次运行完,需要重新运行上述命令,才可以进行通信。在运行的过程中,ROS2使用了共享内存机制,会共享内存。运行之后,宿主机和容器可能用户名不同,这是因为。

qq_43280851的博客 1265

Java中静态常量和枚举类的区别

常量:在Java中,利用关键字final声明常量。一旦被赋值之后,就不能够再更改了。静态常量:在常量定义时使用static修饰,那么此常量称为静态常量,如果再加上public,那么其它类中也可以使用此常量。在项目中我们有时候会使用常量、静态常量以及枚举,那么他们有什么区别呢?枚举类:所有的枚举类型都是Enum类的子类,枚举通常是描述同一特征的一组实例。单一固定值通常使用使用常量表示;静态常量可以使用public修饰范围;描述同一个字段的一组值通常使用枚举表示;枚举可以初始化实例。

蜗牛的高铁 935

MODIS 遥感数据批量下载(使用Cygwin)

MODIS 遥感数据批量下载(使用Cygwin)包含Cygwin的下载教程

weixin_45913084的博客 916

【低空经济】低空无人驾驶航空器运行管理系统设计方案

低空无人驾驶航空器运行管理系统(以下简称“系统”)旨在为低空域内的无人驾驶航空器(UAV)提供高效、安全、智能的运行管理服务。系统通过集成先进的通信、导航、监控、数据处理和人工智能技术,实现对低空域内无人驾驶航空器的实时监控、动态调度、风险评估和应急响应,确保其在复杂空域环境中的安全运行。系统的核心功能包括空域管理、飞行计划审批、实时监控、冲突预警、应急管理和数据分析。空域管理模块负责划分和管理低空域资源,确保不同飞行任务之间的空域隔离和高效利用。

2502_92579126的博客 1140

JavaSE 第七章 面向对象基础(下)静态&枚举&抽象类

某些类型的对象是有限的几个,例如:星期:Monday(星期一)…Sunday(星期天)性别:Man(男)、Woman(女)月份:January(1月)…December(12月)季节:Spring(春节)…Winter(冬天)……枚举类型本质上也是一种类,只不过是这个类的对象是固定的几个,而不能随意让用户创建。在JDK1.5之前,需要程序员自己通过特殊的方式来定义枚举类型。在JDK1.5之后,Java支持enum关键字来快速的定义枚举类型。不具体、或无法具体。...

weixin_45890113的博客 1089

如何借助Gemini 3 Pro完成一篇文献精读?(劝收藏)

金句必须是原文的完整句子,并附上该句子在文中的大致位置。你是一名资深科研文献评估专家,请根据我提供的文献信息(标题、作者、期刊、时间、引用、摘要、结论、图表)依次输出:①影响力评估:按期刊、作者、时间、引用、问题重要性给出1–10分及简述;用上述方法再结合Gemini 3 Pro的辅助,原本需要3小时才能读完一篇文献,现在只需50分钟,不管是顶刊论文还是领域内冷门论文,都可以用这套方法,另外七哥设计的高阶精读提示词,需根据自己的文献内容做调整,希望这篇文章的方法能帮你高效精读文献,掌握文献的精华内容。

智能AI让学术科研更容易 1302

Java 枚举

枚举通过enum关键字定义,本质是一种 “受限制的类”,其语法简洁且语义清晰。最简单的枚举用于定义一组相关常量,例如表示星期的枚举:java运行// 定义枚举使用时直接通过 “枚举类。常量名” 访问,编译器会检查合法性(避免无效值):java运行// 合法// 编译报错:类型不匹配,无法赋值整数Java 枚举是一种 “受约束的类编译后:继承的final类,每个常量是的单例实例;核心价值:提供类型安全的常量管理,避免无效值,自带丰富方法(values()valueOf()等)和集合支持;

King_model的博客 1436

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

Java 枚举深度解析:为什么枚举常量本质上是“对象”?

摘要: Java枚举本质上是继承了java.lang.Enum的类,枚举常量实际上是该类的静态单例对象。当枚举带参数时(如RED(255,0,0)),编译器会将其转换为类似new Color(255,0,0)的对象创建过程,因此必须编写对应的构造函数来接收参数。这一机制解释了为什么枚举可以拥有字段、方法等类特性,而Lombok的@AllArgsConstructor正是为了自动生成这些必要构造函数。通过理解枚举的"对象本质",开发者能更透彻地运用枚举的高级特性。

xdscode的博客 221

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

枚举线程安全原理

在 Java 中,枚举(enum)的线程安全性源于其特殊的实现机制和 JVM 的类加载过程。

m0_74045244的博客 331

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

AJPFX关于枚举,泛型详解

枚举类型是JDK5.0的新特征。Sun引进了一个全新的关键字enum来定义一个枚举类。下面就是一个典型枚举类型的定义:public enum Color{RED,BLUE,BLACK,YELLOW,GREEN}   显然,enum很像特殊的class,实际上enum声明定义的类型就是一个类。 而这些类都是类库中Enum类的子类(java.lang.Enum)。它们继承了这个Enum中的许多有用的方...

weixin_34107739的博客 123

Java 枚举与静态常量的深入比较与应用

在上面的例子中,MAX_SIZE和APP_NAME是静态常量。static关键字表示这些常量属于类,而不是类的实例;final关键字表示这些常量的值一旦赋值后不可更改。在上面的例子中,Day是一个枚举,定义了一周的七天。每个枚举值都是Day类型的实例。在处理订单状态时,可以使用枚举来更清晰地表示订单的不同状态,并且可以通过方法获取更多的状态描述信息。静态常量和枚举是 Java 中处理固定数据的两种重要方式。静态常量简单直观,适用于需要定义少量不变值的场景。

私聊前往站内信:https://i.youkuaiyun.com/#/msg/chat/weixin_44976692 2万+

枚举,静态常量,注解的选择

枚举: 枚举类型是强类型的,从而保证了系统安全性。枚举可以限定参数的个数,对调用者的行为能更加严格地进行控制。把一些运行期的参数检查放到了编译期。通俗的来讲就是枚举更加安全,提高了代码的可读性。 下面是有关枚举的一个简单的例子: public enum Season { Spring(1,"春","cyan","warmth"),Summer(2,"夏","green","hot.

qq_33371372的博客 4678

枚举真的比静态常量更占空间吗?

前两天在网上看到一条信息:枚举比静态常量更占用空间。 这是真的吗? 前言 枚举 枚举类型是Java 5中新增特性的一部分,它是一种特殊的数据类型,之所以特殊是因为它既是一种类(class)类型却又比类类型多了些特殊的约束,但是这些约束的存在也造就了枚举类型的简洁性、安全性以及便捷性。 枚举实现原理 在使用关键字enum创建枚举类型并编译后,编译器会为我们生成一个相关的类,这个类继承了Java ...

少年闰土的博客 1612

java推荐使用枚举定义常量

假如有一笔业务需要审核,审核状态分:未审核,审核中,审核通过,审核不通过。我们在程序里是否可以直接这么写: if(state==1){//1代表未操作 //操作 }else{ //...... } 将状态标识直接写在代码里面(硬编码),只图一时方便,却是后患无穷,如果有一天你需要修改状态标识,用0代表未审核而不是1,你不得不将所有与该标识相关的代码都找出来一个个改,另外,在编码过程中,

4万+

java定义静态常量_如何在Java中定义常量

围绕JAVA中的常量主题似乎存在很多混淆,有的人使用整数或字符串来定义常量,而有的人则使用枚举。我还遇到了在自己的接口中定义的常量 —— 使用常量的类必须实现接口。该策略通常被称为界面常量设计模式。在本文中,我们将介绍在Java中存储常量的两种最常见的策略: 整数和枚举。假设我们有一个表示在线商店中的订单的类,我们希望跟踪订单发生的一周中的哪一天。请注意,该类目前不会编译 - [datatype...

weixin_28706541的博客 3194

java 枚举 静态_关于java:静态枚举与非静态枚举

本问题已经有最佳答案,请猛点这里访问。Java中的静态枚举和非静态枚举有什么区别? 两种用法都是一样的。在启动时是否在内存中加载了所有静态的,并且按需加载了非静态的? del>是否正确?如果是,那么哪种方法更好? 是否始终将一些数据保存在内存中或使用服务器资源加载它们?public class Test {public enum Enum1 {A, B}public static enum ...

weixin_35710893的博客 2532

【JAVA】关于枚举的实例说明(包括:枚举文件,枚举常量与Swich结合)

枚举怎么理解呢? 1.可以理解为一组静态常量。 2.也可以理解为,注册页面中的下拉框或固定选择框(反正不能让用户自己输入内容)。比如:选男,女,小学生选年级。 一、枚举文件样式(Enum_File.java) package z_Enum; public enum Enum_File { // 小学学生的六个年级 One,Two,Tree,Four,Five,Six,Ten } ...

【敦厚的曹操】的专栏 452

[Java Base] 类,接口,枚举,静态常量到底应该放在哪?

静态常量什么时候适合放在类中?什么时候适合放在接口中?什么时候适合放在枚举中呢?放在不同的type中会引发什么不良后果呢?本篇就来解析一下~常量类应该是final,不变的,而接口里的参数是final,也是不变的。那么,看起来接口是放常量没有一定问题,还省去了final的输入,非常的合适。但是,类是只能单继承的,接口是允许多实现的。要是类实现的多个接口出现重名的常量,会报错,必须要在实现类明确常量用的是哪个接口的。

OxYGC 1605

关于Java的变量和常量的应用

在Java中,常量通常通过。

2201_76023713的博客 1008
上一篇: Java自动拆装箱
下一篇: Java反射之Class,Constructor,Field
marching21
博客等级 码龄12年 0粉丝 12原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值