Hutool Hutool
(opens new window)
🏡首页
📖指南
🎢最佳实践
💖支持
💡javaDoc (opens new window)
⏳更新记录 (opens new window)
  • 🍎gitee (opens new window)
  • 🍏github (opens new window)
(opens new window)
🏡首页
📖指南
🎢最佳实践
💖支持
💡javaDoc (opens new window)
⏳更新记录 (opens new window)
  • 🍎gitee (opens new window)
  • 🍏github (opens new window)
  • 快速入门

  • 核心(hutool-core)

    • AI(Hutool-ai)

    • 注解(annotation)

    • 数组(array)

    • JavaBean(bean)

    • 缓存(cache)

    • 类加载器(classloader)

    • 编码解码(codec)

    • 集合(collection)

    • 比较器(comparator)

    • 压缩(compress)

    • 类型转换(convert)

    • 数据(data)

    • 日期时间(date)

    • 异常(exception)

    • 函数(func)

    • IO流(io)

    • 语言特性(lang)

      • 简介
      • 断言工具-Assert
      • 链式接口-Chain
      • 控制台工具-Console
      • 控制台表格-ConsoleTable
      • 枚举项-EnumItem
      • 选项工具-Opt
      • 单例工具-Singleton
        • 模块介绍
          • 为什么封装此模块
          • JDK问题解决
          • 相关JDK模块
        • API文档
          • get方法(按类获取)
          • 功能说明
          • 方法签名
          • 示例
      • 验证工具-Validator
      • 版本工具-Version
    • Map(map)

    • 数字数学(math)

    • 网络(net)

    • 对象池(pool)

    • 反射(reflect)

    • 正则(regex)

    • 服务提供(spi)

    • 聚合操作(stream)

    • 字符串文本(text)

    • 并发和线程(thread)

    • 树结构(tree)

    • 工具集合(util)

    • XML操作(xml)

  • 定时任务(hutool-cron)

  • 加密(hutool-crypto)

  • 数据库(hutool-db)

  • 扩展(hutool-extra)

  • HTTP(hutool-http)

  • 日志(hutool-log)

  • 配置文件(hutool-setting)

  • JSON(hutool-json)

  • Office办公(hutool-poi)

  • 套接字(hutool-socket)

  • GUI(hutool-swing)

  • 指南
  • 核心(hutool-core)
  • 语言特性(lang)
Hutool
2026-01-16
目录

单例工具-Singleton

# 单例工具-Singleton

# 模块介绍

Singleton是一个单例对象管理工具类,提供了单例对象的统一管理机制。当调用get方法时,如果对象池中存在此对象则返回,否则创建新对象并放入池中返回。它支持多种方式创建和管理单例对象,是实现单例模式的便捷工具。

# 为什么封装此模块

  1. 简化单例实现:无需手动编写双重检查锁定等复杂单例代码
  2. 统一管理:所有单例对象集中管理,便于维护和监控
  3. 支持带参构造:允许通过构造参数创建不同的单例实例
  4. 线程安全:基于ConcurrentHashMap实现,确保多线程环境下的安全性
  5. 灵活扩展:支持自定义键和创建函数,适应各种单例场景
  6. 便于测试:提供了销毁和移除方法,方便单元测试

# JDK问题解决

传统单例模式实现存在以下问题:

  1. 代码冗长,需要手动处理线程安全问题
  2. 不支持带参数的构造方法创建不同实例
  3. 缺乏统一的管理机制,单例对象分散在各处
  4. 难以在运行时动态替换或销毁单例对象
  5. 测试困难,单例状态难以重置

Singleton工具通过统一的对象池管理,解决了这些问题,提供了更灵活、更易用的单例实现方式。

# 相关JDK模块

  • java.util.concurrent.ConcurrentHashMap:用于存储单例对象,确保线程安全
  • java.lang.reflect:用于通过反射创建对象实例
  • java.util.Set:用于返回存在的类集合

# API文档

# get方法(按类获取)

# 功能说明

获得指定类的单例对象。对象存在于池中返回,否则创建,每次调用此方法获得的对象为同一个对象。注意:单例针对的是类和参数,也就是说只有类、参数一致才会返回同一个对象。

# 方法签名

public static <T> T get(final Class<T> clazz, final Object... params)

# 示例

// 无参构造创建单例
User user1 = Singleton.get(User.class);
User user2 = Singleton.get(User.class);
Console.log(user1 == user2); // true
选项工具-Opt
验证工具-Validator

← 选项工具-Opt 验证工具-Validator→

Theme by Vdoing | Copyright © 2025-2026 Hutool | Apache-2.0
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式