单例模式传参传递的是对象引用的副本,而非新实例;方法内可修改其状态但无法改变其全局唯一性,传参机制与普通对象无本质区别。

Java中单例模式的实例作为参数传给其他业务类时,传递的是该单例对象的引用的副本——也就是指向堆中那个唯一对象的内存地址的一个拷贝。
单例对象本身不会被复制
无论你用饿汉式、懒汉式还是静态内部类实现单例,整个JVM中只存在一个实例。当你写:
- ServiceA.process(ConfigManager.getInstance());
- Logger logger = Logger.getInstance(); handle(logger);
传入方法的不是新对象,也不是“引用类型本身”,而是当前引用变量所持有的地址值的一份拷贝。这个拷贝和原始引用都指向堆中同一个单例对象。
在 Java 中初始化和管理阿里云 SDK客户端。包括单例模式、线程安全、endpoint 与 region 配置、VPC 终端节点、同步与异步等。
方法内能修改对象状态,但不能改变单例身份
在接收方法中:
- 可以调用 instance.setConfig(...) 修改其内部字段——因为操作的是堆中同一对象
- 但若执行 instance = new ConfigManager();,只是让形参指向新对象,不影响外部持有的那个唯一实例
- 原单例的全局唯一性、线程安全性等特征完全不受参数传递影响
和普通对象传参没有本质区别
单例的“特殊性”在于创建方式和全局可见性,不在于传参行为。Java所有对象类型参数都是按“引用的值”传递,单例也不例外。它只是恰好是那个被反复复用的、地址不变的对象而已。
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南










