java开发——enum枚举单例的使用

Java 枚举实现单例模式,线程安全又优雅! 枚举在序列化和反序列化时,并不会调用构造方法,这就防止了反序列化导致的单例破坏的问题。反编译任何一个枚举类会发现,枚举类里的各个枚举项是是通过static代码块来定义和初始化的(可以见后面3.2节反编译分析单例枚举有分析到这个),它们会在类被加载时完成初始化,而java类的加载由JVM保证线程安全,所以,创建一个Enum类型的枚举是线程安全的。因为存在着指令重排序的优化,第2、3步的顺序是不能保证的,最后的执行顺序可能是1-2-3,也可能是1-3-2,假如执行顺序是1-3-2,我们看看会出现什么问题。 阅读详情

代码如下:

public enum Factory {

    INSTANCE;

    private static String factoryName = "大江南北股份有限公司";

    public static String getFactoryName() {
        return factoryName;
    }

    public String getProduct() {
        //do something
        return "工厂制作的产品";
    }

    public static void main(String[] args) {
        Factory factory = Factory.INSTANCE;//获取单例
        String product = factory.getProduct();//执行单例的方法,完成相应逻辑
        System.out.println(Factory.getFactoryName() + "的产品:" + product);
    }
}

参考书籍:Effective Java(第2版)

如果对您有用的话赞一下呗!谢谢谢谢~

java enum枚举详解 说法是否正确enum底层基于✅完全正确所有枚举都隐式继承Enum<E>✅ 是name和ordinal来自Enum类✅ 是开发者不能手动继承Enum✅ 是(语言禁止)枚举仍是“类”,只是特殊语法✅ 是enum关键字的本质,就是 Java 提供的一种“安全、简洁、功能完整”的方式,来创建继承自的常量类。这就是 Java 枚举既简单又强大的秘密 🌟这是一个非常深刻的问题!你已经触及了 Java 语言设计的核心安全机制。问题答案能否手动?❌不能,编译器禁止为什么禁止? 阅读详情

相关推荐

一种导弹追踪算法的MATLAB仿真实现

以下是一个用于模拟机动变轨导弹和防空导弹追踪过程的 MATLAB 代码,同时会提供 3D 效果展示。你可以运行这段代码,从而观察机动变轨导弹和防空导弹的速度与位置变化。

SmartGridequation的博客 933

Java 利用枚举实现单例模式

引言单例模式比较常见的实现方法有懒汉模式,DCL模式公有静态成员等,从Java 1.5版本起,单元素枚举实现单例模式成为最佳的方法。Java枚举基本用法枚举的用法比较多,本文主要旨在介绍利用枚举实现单例模式的原理,所以这里也主要介绍一些相关的基础内容。 首先,枚举类似类,一个枚举可以拥有成员变量,成员方法,构造方法。先来看枚举最基本的用法:enum Type{ A,B,C,D; }创建en

yy254117440的博客 7万+

dToF直方图之美

上面视频里如果你能看懂,那么就能理解对于dToF单点的测距问题,对于大部分的描述在AMS和ST里的手册都非常的详细,有疑问的可以后台来找我探讨,今天我们单纯从上层讨论成像的问题。作为dToF算法工程师,应该是对直方图敏感的,直方图的每个Count峰都会表征出问题,因为dToF的输出只有直方图,观察直方图能够逆推出dToF的很多东西,这也是大多数公司不愿意开放直方图和Raw data的缘故。以上是一个小面阵的分辨率,第一张是直方图,后面是基于直方图寻峰出来的成像ToF图,Peak图,以及噪声Noise图。

dream it possible 2995

java enum 初始化_详解Java的Enum的使用与分析

java Enum 使用示例:public enum EnumTest {FRANK("The given name of me"),LIU("The family name of me");private String context;private String getContext(){return this.context;}private EnumTest(String context...

weixin_33331639的博客 2733

【vue看板】

大屏看板提示:以下是本篇文章正文内容,下面案例可供参考提示:这里对文章进行总结:代码量较多,看板中的。

weixin_46223284的博客 2772

计算pi小数点后10000位

数据结构课上,老师让我们计算一下pi的10000位,复习一下面向对象。 First Try:定义一个高精度类hp(high precision),实现加减乘除,输入输出,然后随便找一个公式,比如Wallis公式,全都用hp进行计算。 现实是:大数乘大数或者大数除大数,实在是太慢了。而且Wallis公式收敛太慢。 Second Try先找到一个收敛较快的公司:BBP公式,观察公式发现,...

我的技术人生 7394

重新认识java(十) ---- Enum(枚举类)

有的人说,不推荐使用枚举。有的人说,枚举很好用。究竟怎么使用,如何使用,仁者见仁智者见智。总之,先学会再说~

mystery的博客 7万+

从一根USB线缆说起:深入浅出聊聊那些影响信号完整性和EMC性能的‘小细节’(双绞、屏蔽、360度搭接全解析)

本文深入探讨了USB线缆中影响信号完整性和EMC性能的关键细节,包括双绞线绞距、屏蔽层设计和360度搭接工艺。通过实验数据和实用技巧,揭示了这些‘小细节’如何显著影响高频信号质量和电磁兼容性,为工程师提供了从选购到系统设计的全面指南。

weixin_30824479的博客 439

java项目中enum的用法_java中enum的用法

不一样的Java EnumEmum是在Java5中引入的新特性,从那开始,它被广泛的用在不同的Java应用中,相比于C和C++的Enum,Java的Enum功能更加强大。但是很多开发人员暂时还没意识到它的强大之处,在Enum的一些细节问题上把握的还不到位。Enum的特性及相关资料可以整理出一本书也不为过,这里简单对Enum...文章艾贺2018-03-23552浏览量Java秘术:用枚举构建一个状...

weixin_42503660的博客 837

【unity小技巧】新输入系统InputSystem游戏运行中改键重新绑定控制按键(最全最完美解决方案)

在游戏开发中,控制输入是至关重要的一环。Unity的新输入系统(Input System)为开发者提供了强大的工具来管理和处理用户输入,不仅支持各种平台上的多种输入设备,还能轻松处理复杂的输入操作和映射。本文将深入探讨如何使用Unity的新输入系统重新绑定控制按键,为开发者提供一套全面且完善的解决方案。

向宇的博客,专注php/web全栈 unity游戏开发,欢迎大家评论纠错 7358

基于卷积神经网络CNN实现电力负荷多变量时序预测(PyTorch版)

随着智能电网的发展,精准的电力负荷预测对能源调度和电网稳定具有重要意义。本文基于PyTorch框架,提出一种基于卷积神经网络(CNN)的多变量时间序列预测模型,用于电力负荷的短期预测。

时序笔记 988

Java枚举Enum全攻略:生成方法、优劣对比与企业级最佳实践

摘要:Java枚举(Enum)是一种特殊的引用类型,用于定义固定常量集合,具有强类型安全、可扩展性和可读性强等优势。相比传统常量类,枚举能避免类型转换错误和非法取值问题,并提供内置方法和专用集合支持。本文详细解析了枚举的两种生成方式:编译期静态定义和运行时动态生成,分析其优缺点及适用场景。同时探讨了枚举的高阶应用,包括专用集合(EnumSet/EnumMap)、设计模式搭配(单例/策略/状态模式)以及主流框架中的应用。

weixin_66243333的博客 783

Windows11上pip安装IsaacSim5.1.0与IsaacLab

本文详细介绍了CUDA Toolkit 12.8.0、IsaacSim和IsaacLab的安装过程。首先从NVIDIA官网下载并安装CUDA Toolkit 12.8.0,然后通过miniforge创建conda环境(env_isaacsim)安装IsaacSim相关Python包,解决了Windows长路径问题。成功运行IsaacSim后,克隆IsaacLab仓库并完成安装验证,最后通过创建空场景测试环境配置。整个安装过程包含详细的命令行操作和问题解决方法,为机器人仿真开发环境搭建提供了完整指导。

拥抱具身智能,昇腾Ascend C 378

Java枚举详解

枚举是一个被命名的整型常数的集合,用于声明一组带标识符的常数。枚举在曰常生活中很常见,例如一个人的性别只能是“男”或者“女”,一周的星期只能是 7 天中的一个等。类似这种当一个变量有几种固定可能的取值时,就可以将它定义为枚举类型。 在 JDK 1.5 之前没有枚举类型,那时候一般用接口常量来替代。而使用 Java 枚举类型 enum 可以更贴近地表示这种常量。声明枚举 声明枚举时必须使用 enum 关键字,然后定义枚举的名称、可访问性、基础类型和成员等。枚举声明的语法如下: enum-modifier

Java后端技术栈 9078

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

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

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

java 枚举_10年程序员带你深入剖析Java中的枚举Enum

在编程语言中我们,都会接触到枚举类型,通常我们进行有穷的列举来实现一些限定。Java也不例外。Java中的枚举类型为Enum,本文将对枚举进行一些比较深入的剖析。什么是EnumEnum是自Java 5 引入的特性,用来方便Java开发者实现枚举应用。一个简单的Enum使用如下。为什么会有Enum在Enum之前的我们使用类似如下的代码实现枚举的功能然而上面的还是有不尽完美的地方setColor(CO...

weixin_39935319的博客 205

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

java--Java 枚举(enum)

Java枚举(enum)是一种特殊类,用于定义一组固定常量。它比传统常量定义更安全高效,支持构造方法、成员变量和方法。枚举本质继承自java.lang.Enum,每个值都是单例实例。使用场景包括表示星期、状态等固定值集合。枚举可以定义属性(如状态码和描述信息)及对应方法,通过private构造方法初始化。主要特点:类型安全、可读性强、支持遍历和扩展功能。基本用法包括定义枚举类、获取枚举值、遍历及访问属性方法。

你我约定有三的博客 606

Enum枚举类

为什么80%的码农都做不了架构师?>>> ...

weixin_33841722的博客 82

Java 枚举(enum)剖析

目录 Java 枚举(enum)概述 枚举常量 属性与方法 枚举参数 实现接口 抽象方法 Java 枚举(enum)概述 1、Java JDK 1.5 新增的 enum 关键词,可以定义枚举类,如 public enum WeekEnum { }. 2、使用 enum 定义后的枚举类在编译后默认继承 java.lang.Enum 类,而不是普通的继承 Object 类。由于 Ja...

蚩尤后裔-汪茂雄 8407

java 枚举单例

/** * 所有的枚举类型隐性地继承自java.lang.Enum 。 * 枚举实质上还是类!而每个枚举的成员实质就是一个枚举类型的实例, * 他们默认都是public static final 修饰的。可以直接通过枚举类型名使用它们。 * 建议: * 1.当你需要定义一组常量时,可以使用枚举类型 * 2.尽量不要使用枚举的高级特性,事实上高级特性都可以使用普通类...

huidev的博客 2615

java设计模式——Enum枚举单例

一、Enum枚举单例模式 1、 定义一个枚举类 package com.rf.designPatterns.singleton.enumSingleton; /** * @description: 定义一个枚举类 * @author: xiaozhi * @create: 2020-06-01 20:50 * 枚举类的单例模式 * 1、序列化和反序列化不会出现多次实例化的情况 * 2、对于反射攻击也不会存在问题 * 3、EffecttiveJava书中强烈推荐枚举类单例模式 */ publ

小志的博客 1193

Effective Java --通过枚举enum实现单例设计

Effective Java --通过枚举enum实现单例设计 最近在看Effective Java,记录下之后编码时可以注意的一些习惯,提高编码质量 每提高一点都是积累 通过枚举enum实现单例设计 实现枚举类 枚举中的属性必须放在最前面,一般使用大写字母表示 枚举中可以和java类一样定义方法 枚举中的构造方法必须是私有的 通过枚举来实现单例 实现单例的核心在于privat...

jtf8525140的专栏 475

enum枚举单例的使用

使用情景:java调用dll,在调用dll里面的接口之前,要先调用初始化函数;而这个初始化函数每次都需要执行1分钟才执行完,如果每次调用接口之前都调用一次初始化函数,显然太过浪费时间,很影响用户体验;故用单例模式解决此问题。 1.创建单例类: /** * enum枚举单例的使用 */ public enum PictureUtil { INSTANCE; private...

聆听。。花开雨落的博客 1455

用枚举enum实现单例

用枚举enum实现单例

PacosonSWJTU的博客 1772

java 枚举 单例_Java单例使用枚举

在创建单例类时,请考虑使用枚举。它解决了可能会因反序列化和反射而出现的问题。单例是应该在每个JVM中只有一个实例的类。单例类的Same实例被多个线程重用。大多数情况下,我们使用单例来表示系统配置和窗口管理器,因为这些实例应该是JVM中所有线程和对象所共有的。【优锐课】抽丝剥茧 细说架构那些事抽丝剥茧 细说架构那些事制作单例的传统方法有几种流行的制作单例的方法。方法1:具有公共静态最终字段的单例pu...

weixin_35009071的博客 830

java 枚举 单例_Java枚举enum以及应用:枚举实现单例模式

枚举作为一个常规的语言概念,一直到Java5才诞生不得不说有点奇怪,以至于到现在为止很多程序员仍然更喜欢用static final的形式去命名常量而不使用,一般情况下,Java程序员用这种方式去实现枚举:classEnumByClass{public static final int RED=0;public static final int GREEN=1;public static final...

weixin_39607798的博客 413
上一篇: java开发——Apache Mina的使用
下一篇: java开发——为什么要重写equals()和hashCode()方法?
river66
博客等级 码龄8年 76粉丝 108原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值