文章目录
发布逸出
- 发布逸出
什么是发布: 把这个对象, 给别的类去使用. (作为参数传递, return对象等情况. ) 对象逸出: 对象发布到了不该发布的地方. 如下的情况都是逸出 如下的代码演示了发布逸出的情况 ,定义了一个private对象, 并且用一个public的方法getStates去返回该对象. 在ReleaseEscapeDemo的构造方法中, 给这个map赋初始化的值. 这样的值,在生产环境中 , 可能是一些配置的信息 ,是要提供给其他很多的业务代码去使用的 . 原则上是不允许修改的, 但是在main方法中, 尝试去获得map , 并且去remove掉一个元素.
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 Map states ;
public ReleaseEscapeDemo() {
states = new HashMap();
states.put("1","a");
states.put("2","b");
states.put("3","c");
}
//对象逸出 返回了一个私有变量
public Map getStates() {
return states;
}
public static void main(String[] args) {
ReleaseEscapeDemo re = new ReleaseEscapeDemo();
Map states = re.getStates();
System.out.println(states.get("1"));
states.remove("1");
System.out.println(states.get("1"));
}
}
运行程序后, 控制台打印如下, 说明了成功的获得了值, 并且把map中的值给移除了. 这就是private对象逸出. 会导致其他代码原本要获得key为a的值, 结果却获得不到了