延迟加载单例模式(IoDH)引发的NoClassDefFoundError

本文介绍了使用初始化-on-demand holder idiom(IoDH)实现单例模式时遇到的NoClassDefFoundError异常。通过问题背景、复现过程和问题分析,揭示了在构造对象时出现异常导致的单例类内部静态类未加载的问题,强调了IoDH必须应用于保证初始化不失败的场景。
摘要由CSDN通过智能技术生成

一、问题背景

最近题主发布在公司的SDK遇到了一个Bug。有关单例模式的,什么问题呢?
我们先回想下,单例模式怎么写。30分钟学透设计模式1-单例模式的前世今生

简而言之:
- 私有的构造方法
- 提供一个静态可以获取实例对象的方法

其分类可大致分为:
- 非延迟加载(饿汉)
- 延迟加载(懒汉等)

问题:
题主使用的是:initialization-on-demand holder idiom 这种方法实现。然而却抛出了以下异常:

java.lang.NoClassDefFoundError: Could not initialize class SingleTon$Holder
    at SingleTon.getInstance(SingleTon.java:11)
    at SingleTon.main(SingleTon.java:24)
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值