Java多线程 解决private对象逸出--返回副本
发布日期:2021-06-30 13:12:09
浏览次数:2
分类:技术文章
本文共 1294 字,大约阅读时间需要 4 分钟。
文章目录
解决private对象逸出–返回副本
如下的代码, 使用的是返回对象的副本的方式, 来解决private对象逸出
package com.thread.background;import java.util.HashMap;import java.util.Map;/** * 类名称:ReleaseEscapeDemo * 类描述: 发布逸出的演示 * * @author: https://javaweixin6.blog.csdn.net/ * 创建时间:2020/9/1 7:52 * Version 1.0 */public class ReleaseEscapeDemo { //定义一个private私有变量 private Mapstates; public ReleaseEscapeDemo() { states = new HashMap<>(); states.put("1", "a"); states.put("2", "b"); states.put("3", "c"); } //对象逸出 返回了一个私有变量 public Map getStates() { return states; } /** * 返回对象的副本 * @return */ public Map getStatesCopy() { return new HashMap<>(states); } public static void main(String[] args) { ReleaseEscapeDemo re = new ReleaseEscapeDemo(); System.out.println(re.getStatesCopy().get("1")); re.getStatesCopy().remove("1"); System.out.println(re.getStatesCopy().get("1")); }}
其关键的代码如下 , 新建立一个getStatesCopy
方法, 里面返回一个new hashmap. 并且这个map 的构造 直接传入private的map . 相当于把private的map赋值给了新的map .
getStatesCopy
方法, 实际上是获取的三个map. 因此即使remove掉了key为1的元素, 再次获取也能拿得到. 所以控制台打印了两个1 转载地址:https://javaweixin6.blog.csdn.net/article/details/108371426 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!
发表评论
最新留言
关注你微信了!
[***.104.42.241]2024年04月12日 05时05分14秒
关于作者
喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
Oracle 的循环中的异常捕捉和处理
2019-04-30
Oracle的pfile和spfile的一点理解和笔记
2019-04-30
java实现稀疏数组及将稀疏数组存入硬盘中
2019-04-30
2021-05-18
2019-04-30
libuv实现ping包发送和接收
2019-04-30
基础架构系列篇-系统centos7安装docker+COMPOSE
2019-04-30
基础架构系列篇-NGINX部署VUE
2019-04-30
基础架构系列篇-系统centos7安装kafka
2019-04-30
软件质量的8个特性
2019-04-30
2021年不可错过的17种JS优化技巧(一)
2019-04-30
在 Vue 中用 Axios 异步请求API
2019-04-30
MySQL进阶查询(SELECT 语句高级用法)
2019-04-30
Mysql 之主从复制
2019-04-30
【NLP学习笔记】中文分词(Word Segmentation,WS)
2019-04-30
对于时间复杂度的通俗理解
2019-04-30
如何输入多组数据并输出每组数据的和?
2019-04-30
行阶梯型矩阵
2019-04-30
MATLAB指定路径保存图片方法
2019-04-30
JAVA学习笔记6 - 数组
2019-04-30
JAVA学习笔记10 - 继承
2019-04-30