我们平时写的java类岂不是都逸出了?

来源:10-7 逸出对象

海天s

2019-12-14

老师,我们平时定义普通的java类,属性都是私有的,然后是public的get/set方法,那这都算逸出吗?
如果是逸出,我感觉没什么风险啊。如本例中,我们只是把新new出来的对象里的map给remove了一个key。再new其它对象时,map依然是周一到周四啊。
这不是日常编程中很常见的使用吗,怎么成了逸出风险了。
求解答,谢谢。

写回答

2回答

悟空

2019-12-14

如果是逸出,那么必须是“本不想让外界拿到,却不慎被外界拿到了”。平时的get/set,我们本身就是想让外界拿到,所以不算逸出。同理,如果我们的本意就是希望外界可以获取到new出来的对象里的map,那么就不算逸出,但是本例中,代码编写者不希望这个map被外界修改,那么这里就属于逸出,所以直接返回map对象是有风险的,你可以看下后面的小节对这个问题的修复方案。

2
0

JLU_LONG

2019-12-24


你用到setget就要创建啊,你既然你创建了,肯定就是想让别人访问。

0
0

线程八大核心+Java并发原理及企业级并发解决方案

完整的并发知识网络+丰富的工作内容分享+50余道并发高频面试题

2512 学习 · 940 问题

查看课程