gpt4 book ai didi

java - 在Java中,从哪里可以调用构造函数?

转载 作者:行者123 更新时间:2023-12-01 18:10:03 25 4
gpt4 key购买 nike

这个说法是真是假?

“调用构造函数的唯一方法是从另一个构造函数内部调用。”

我认为如果对构造函数的调用前面带有关键字“new”,则可以从方法(和其他位置)内调用构造函数。

这个说法怎么样?是真是假?

“调用构造函数的唯一方法是从另一个构造函数内部(使用对 super() 或 this() 的调用),或者从静态或实例方法、静态或实例初始值设定项 block ,甚至构造函数内部,如果对构造函数的调用前面有关键字“new”。”尝试像调用方法(仅使用其名称)一样调用构造函数是不允许的。”

这样更准确吗? “如果对构造函数的调用前面没有关键字‘new’,则调用构造函数的唯一方法是在另一个构造函数中使用 this() 或 super() 作为第一个语句。”

最佳答案

我们直接进入 JLS, §8.8 :

Constructors are invoked by class instance creation expressions (§15.9), by the conversions and concatenations caused by the string concatenation operator + (§15.18.1), and by explicit constructor invocations from other constructors (§8.8.7). [...]

Constructors are never invoked by method invocation expressions (§15.12).

因此,您引用的第一条语句在技术上是错误的,因为 JLS 定义使用 new 来调用构造函数。

请注意,您的段落长度陈述是真实和虚假信息的组合;除了创建新对象之外,您无法从静态或实例方法调用构造函数。

关于java - 在Java中,从哪里可以调用构造函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33714686/

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