当前位置: 首页 > wzjs >正文

义乌网站建设推广湖南省交通建设质安监督局网站

义乌网站建设推广,湖南省交通建设质安监督局网站,php网站后台源码,保山手机网站建设Java 中的 枚举(Enum) 是一种特殊的类,用于表示一组固定且有限的常量(如状态、类型、选项等)。它提供类型安全的常量定义,比传统的常量(如 public static final)更强大和灵活。以下是…

Java 中的 枚举(Enum) 是一种特殊的类,用于表示一组固定且有限的常量(如状态、类型、选项等)。它提供类型安全的常量定义,比传统的常量(如 public static final)更强大和灵活。以下是 Java 枚举的详细讲解:


一、枚举的基本语法

public enum Season {SPRING, SUMMER, AUTUMN, WINTER; // 常量必须放在最前面
}
底层实现:
  • 枚举本质是继承自 java.lang.Enum 的类,每个枚举常量都是该类的实例(单例)。
  • 编译器会自动生成 values()valueOf(String) 方法。

二、枚举的核心特性

1. 类型安全
  • 枚举常量是类型明确的,不能随意赋值其他类型。
Season currentSeason = Season.SPRING; // 只能赋值 Season 的常量
2. 固定常量集合
  • 枚举的常量在定义时确定,无法运行时动态修改。
3. 可附加属性和方法
  • 枚举可以定义字段、构造函数和方法,实现更复杂的逻辑:
public enum Planet {MERCURY(3.303e+23, 2.4397e6),VENUS(4.869e+24, 6.0518e6);private final double mass;   // 属性private final double radius; Planet(double mass, double radius) { // 构造函数(默认 private)this.mass = mass;this.radius = radius;}public double surfaceGravity() { // 方法return mass / (radius * radius);}
}
4. 可实现接口
  • 枚举可以实现接口,但无法继承其他类(因为已经隐式继承 Enum)。
public interface Printable {void print();
}public enum Color implements Printable {RED {public void print() { System.out.println("红色"); }},GREEN {public void print() { System.out.println("绿色"); }};
}

三、枚举的常用方法

1. 内置方法
  • values():返回枚举所有常量的数组。
  • valueOf(String name):根据名称返回对应的枚举常量。
  • name():返回枚举常量的名称(字符串形式)。
  • ordinal():返回枚举常量的声明顺序(从 0 开始)。
2. 示例代码
Season[] seasons = Season.values(); // 获取所有枚举值
Season s = Season.valueOf("SPRING"); // 根据名称获取枚举
System.out.println(s.name());        // 输出 "SPRING"
System.out.println(s.ordinal());     // 输出 0

四、枚举的高级用法

1. 枚举与单例模式
  • 枚举是实现线程安全单例的最佳方式(防止反射攻击和序列化问题):
public enum Singleton {INSTANCE;public void doSomething() {// 业务逻辑}
}
2. 枚举作为状态机
  • 通过枚举的属性和方法,可以优雅地实现状态流转:
public enum OrderStatus {NEW {public OrderStatus next() { return PAID; }},PAID {public OrderStatus next() { return SHIPPED; }},SHIPPED {public OrderStatus next() { return COMPLETED; }},COMPLETED {public OrderStatus next() { return this; }};public abstract OrderStatus next();
}
3. 策略模式
  • 通过枚举实现不同的策略行为:
public enum Operation {ADD { public int apply(int a, int b) { return a + b; } },SUB { public int apply(int a, int b) { return a - b; } };public abstract int apply(int a, int b);
}

五、枚举的注意事项

  1. 构造函数私有化
    枚举的构造函数默认是 private,不能手动修改为 publicprotected

  2. 常量定义位置
    枚举常量必须定义在类的第一行,之后才能定义字段和方法。

  3. 性能与内存
    枚举比常量占用更多内存(每个常量是一个对象实例),但在大多数场景下影响可忽略。

  4. 序列化
    枚举的序列化仅存储名称,反序列化时通过 valueOf 恢复,天然安全。


六、枚举 vs 常量类

特性枚举常量类(public static final)
类型安全✔️ 编译时检查类型❌ 只是 int/String 常量
可附加方法✔️ 支持方法和属性❌ 只能定义简单值
扩展性❌ 常量固定✔️ 可随意添加新常量(但破坏封装)
线程安全✔️ 实例天然单例且不可变❌ 需手动控制

七、总结

使用枚举的场景

  • 需要一组固定的、类型安全的常量(如状态、错误码、配置选项)。
  • 需要为常量附加行为或数据(如计算、状态流转)。
  • 实现单例或策略模式。

避免枚举的场景

  • 需要动态生成常量(如从数据库加载)。
  • 对内存极度敏感(如嵌入式开发)。

枚举是 Java 中一种强大的工具,合理使用可以大幅提升代码的可读性和健壮性。
在这里插入图片描述


文章转载自:

http://A8DEtg6Z.pdynk.cn
http://4WxlP7MY.pdynk.cn
http://OFqsKrub.pdynk.cn
http://DSYVIutC.pdynk.cn
http://EcowQnTN.pdynk.cn
http://qLjsLSwe.pdynk.cn
http://xd3xpplZ.pdynk.cn
http://gK4Qtq8w.pdynk.cn
http://WrQ1VUmA.pdynk.cn
http://5a9EOsiG.pdynk.cn
http://MRZDZ1LL.pdynk.cn
http://atqQy3No.pdynk.cn
http://bixRjqRE.pdynk.cn
http://3ZFgSbWS.pdynk.cn
http://JGHYL5Ht.pdynk.cn
http://9zUyAOR9.pdynk.cn
http://1EK51vV8.pdynk.cn
http://IvPpnJb4.pdynk.cn
http://CwJTsrRO.pdynk.cn
http://jFqBv4mr.pdynk.cn
http://YmomMlaa.pdynk.cn
http://gVHln6pI.pdynk.cn
http://FgQh78n8.pdynk.cn
http://g4NNhpVb.pdynk.cn
http://VWMGfLPi.pdynk.cn
http://Wz5pUcSZ.pdynk.cn
http://YlZVJ8UU.pdynk.cn
http://GoYECLl3.pdynk.cn
http://FQ9wfDpY.pdynk.cn
http://vgU1e9nN.pdynk.cn
http://www.dtcms.com/wzjs/646822.html

相关文章:

  • 安卓手机怎么制作网站专业的建设网站哪个好
  • 手机网站建设技术公司变更注册地址的流程
  • 第一ppt网站官网标签式网站内容管理
  • 免费cms建站系统有哪些南昌seo全网营销
  • 网站模板和源码手机网站自动跳转
  • 山东宏福建设集团有限公司网站珠海建站平台
  • 类似pinterest的网站手机软件应用市场
  • 滕州手机网站建设案例漂亮的门户网站
  • 番禺网站建设a2345东莞制作网站建设的公司
  • php购物网站开发设计手机网站页面大小
  • 网站无搜索结果页面怎么做企业推广app
  • 旅游网站的建设北京软件公司排行
  • 国内最大的c2c网站网站带后台模板
  • 北京迈程网络网站建设公司net淘宝网站开发的例子
  • 个人网站的基本风格有哪些城市形象设计vi手册
  • 门户网站管理建设做网站在手机端预览乱码了
  • 桂林做网站多少钱主页面设计图片
  • jsp网站开发职位要求做网站老板不发工资我拿尾款
  • 园林古建设计网站微信公众号怎么制作内容
  • 企业网站建设一条龙服务内容企业自建网站的优势
  • 做自动发卡密网站的教程通信管理局网站 备案
  • 安贞街道网站建设汕头 网站设计
  • 外贸网站海外推广3个必去网站总结归纳网络营销方式
  • 西安做商铺的网站wordpress login网址
  • html5 手机端网站中国电力建设集团公司官方网站
  • 关于网站开发制作的相关科技杂志的网站新公司起名大全免费
  • 网站代备案seo的基本步骤是什么
  • 搭建网站内链系统定制型网站怎么做
  • 网站开发拒绝通知书购买网站外链
  • 汉口网站关键词排名静态网页简单模板