一尘不染

Java在构造函数中泄漏了这个

java

为什么IDE会抱怨“在构造函数中泄漏”?我一直认为这只是一种不好的做法。但是我实际上从来没有发现为什么它不好。


阅读 178

收藏
2020-03-20

共1个答案

一尘不染

this在构造器(而不是控制器)中泄漏引用是危险的,尤其是在多线程环境中。这是因为在构造函数调用完成之前,对象尚未完全构造。this因此,从构造函数中泄漏出来意味着外部世界可以访问尚未完全构建的对象。这可能不一定会导致单线程程序出现问题(尽管有可能,但是这种情况下的问题更加明显)。但是,如果this泄漏给其他线程,他们实际上可以尝试在对象构造完成之前对它进行操作,这会导致难以发现的错误。

2020-03-20