是的,构造函数返回是当前实例,但我们不能使用返回类型.是真的吗



是的,构造函数返回当前实例(你不能使用返回类型,但它返回一个值)! 这是真的吗?意味着构造函数真的返回一个值?

不完全是。我会说new返回一个值,构造函数被传递给new并由(内部到 JVM)并实际设置实例。

更准确地说,请参阅 JLS-12.5 创建新类实例,其中部分内容

在返回对新创建对象的引用作为结果之前,将使用以下过程处理指示的构造函数以初始化新对象:

    将构造函数
  1. 的参数分配给此构造函数调用的新创建的参数变量。

  2. 如果此构造函数以同一类中另一个构造函数的显式构造函数调用 (§8.8.7.1) 开头(使用 this),则计算参数并使用这五个相同的步骤递归处理该构造函数调用。如果该构造函数调用突然完成,则此过程出于同样的原因突然完成;否则,请继续执行步骤 5。

  3. 此构造函数
  4. 不以同一类中另一个构造函数的显式构造函数调用开始(使用 this)。如果此构造函数用于 Object 以外的类,则此构造函数将从显式或隐式调用超类构造函数(使用 super)开始。使用相同的五个步骤评估超类构造函数调用递归的参数和过程。如果该构造函数调用突然完成,则此过程将出于同样的原因突然完成。否则,请继续执行步骤 4。

  5. 执行此类的实例初始值设定项和实例变量初始值设定项,将实例变量
  6. 初始值设定项的值分配给相应的实例变量,顺序是它们在类的源代码中以文本方式出现的顺序。如果执行其中任何一个初始值设定项导致异常,则不会处理进一步的初始值设定项,并且此过程会突然完成并出现相同的异常。否则,请继续执行步骤 5。

  7. 执行此构造函数主体的其余部分。如果该执行突然完成,则出于同样的原因,此过程会突然完成。否则,此过程将正常完成。

相关内容

最新更新