gpt4 book ai didi

java - 允许 this 引用转义

转载 作者:IT老高 更新时间:2023-10-28 20:35:11 31 4
gpt4 key购买 nike

如果能帮助我理解“Java 并发实践”中的以下内容,我将不胜感激:

Calling an overrideable instance method(one that is neither private nor final) from the constructor can also allow the this reference to escape.

  1. 这里的“escape”是否仅仅意味着我们可能在实例完全构造之前调用了一个实例方法?
    我没有看到“this”以任何其他方式逃避实例的范围。
  2. “最终”如何防止这种情况发生?在创建实例时是否存在“最终”的某些方面我遗漏了?

最佳答案

  1. 就是调用类外的代码,传递this
    该代码将假定实例已完全初始化,否则可能会中断。
    同样,您的类可能会假设某些方法仅在实例完全初始化后才会被调用,但外部代码可能会破坏这些假设。

  2. final 方法不能被覆盖,因此您可以相信它们不会传递 this
    如果您在非final 类的构造函数中调用任何非final 方法,派生类可能会覆盖该方法并在任何地方传递this .

    即使您调用 final 方法,您仍然需要确保它们是安全编写的——它们不会在任何地方传递 this,并且它们自己不会调用任何非-final 方法。

关于java - 允许 this 引用转义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20474521/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com