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/