Java:Object 类有构造函数吗?

标签 java constructor

Javadoc 提到 Object 类有一个公共(public)的无参数构造函数。但是 Object 的源代码中没有任何显式的构造函数。所以很明显编译器已经为它生成了一个。但是,如果我在构造函数即将返回时看到调用堆栈跟踪(如下所示),我看不到对 Object.<init> 的任何调用。在那个痕迹中。

所以问题是,Object 类是否有文档所说的默认构造函数?如果是,为什么我在调用堆栈跟踪中看不到它?

public ConTest()
{
    new Throwable().printStackTrace();
}

结果:

java.lang.Throwable
    at ConTest.<init>(ConTest.java:8)
    at ConTest.main(ConTest.java:16)

最佳答案

super 构造函数在子/基础构造函数之前运行。在您的示例中,当执行 new Throwable().printStackTrace() 时,对象的构造函数已经运行。

更明确的代码版本:

public ConTest()
{
    super();
    new Throwable().printStackTrace(); // you will not see super() (Object.<init>) in this stack trace.
}

关于Java:Object 类有构造函数吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12066984/

相关文章:

Java 从另一个构造函数调用一个构造函数而不立即拥有参数

java - 尝试使用java更改背景颜色时出错

java - 在 Java 中动态创建一个新实例

Java 11 和 javafx 用法? ,错误java.lang.module.FindException : Module javafx. 找不到控件。甚至认为它们存在

java - 我如何将 TwitterFeed (JSON) 解析为自定义 ListView ?

c++ - 缺少第一个构造函数参数

java - 错误: Constructor cannot be applied to given types

typescript - 获取构造函数的参数类型作为元组

java - preincrement postincrement 优先级问题

java - 如何使用母语运行 Cucumber?