使用枚举进行单例

本文介绍了如何使用枚举类进行单例模式的实现,枚举的线程安全特性使其成为简洁的单例解决方案。通过反编译枚举类的class文件,可以看出枚举本质上是继承自Enum的静态、不可修改的对象,避免了懒汉式单例的线程安全问题。
摘要由CSDN通过智能技术生成

今天在将mybatis封装为一个工具类时,使用单例模式进行封装,而完成单例模式常用的方式有懒汉式,饿汉式。在第一次封装时我使用的是懒汉式的双重判定来做的,后来发现有一种更加简介的方式来实现单例模式,那就是使用枚举类来完成单例模式,下面我们就来看看为什么枚举可以完成单例

枚举类的本质

我们在将一个枚举类的class文件利用javap -v命令进行反编译后可以看到如下内容
在这里插入图片描述
在这里插入图片描述
在这里我们可以清除的看到枚举其实就是一个继承了Enum的类,而我们在没枚举中所声明的常量,就是一个个对象,这些对象都是静态的,不可修改的,这些不正是单例对象所需要的吗,而且在平时使用懒汉式进行单例时,我们还需要考虑线程安全问题,枚举就不需要,它的线程安全有jvm来管理。

枚举进行单例的代码

只需要将工具类声明为enum,然后给一个常量即可

package com.dyit.bims.util;

import java.io.IOException;

import org.apache
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值