只是一个公共类A,它将具有由JVM定义并在运行时调用的默认构造函数
public class A {
}
主类有main方法,它将创建类A的对象并自动调用类A的默认构造函数。
public class Main {
public static void main(String[] args) {
A a = new A();
}
}
我是否可以进行调试,并且可以看到最终调用A类默认构造函数的游标流?
答案 0 :(得分:2)
除非你有一些业务逻辑,否则不会使用debug。否则它是空的。
但是你可以。
public class A {
/* Default no arg constructor */
public A(){
System.out.println("Put a break point at this line");
}
}
您仍然可以在没有默认构造函数的情况下运行此代码,JVM在内部插入它。
如果要添加某些功能,则需要手动编写。
答案 1 :(得分:2)
没有直接的方法。
您可以定义默认构造函数并在其中打印一些内容。
class A {
public A() {
System.out.println("constructor is called");
}
}
现在,当您在Main类中创建A类的实例时,将打印该消息。您可以将调试点放入print语句中,并查看运行时光标。
答案 2 :(得分:1)
为什么你甚至想要这样做? 正如jls所述:
如果声明的类是原始类Object,则默认构造函数具有空体。否则,默认构造函数只调用不带参数的超类构造函数。
所以没什么好看的。只是默认构造函数的一些调用最多为Object
。至于调试问题,这在很大程度上取决于您使用的调试器。
答案 3 :(得分:0)
由于默认构造函数的定义是空的,因此将代码放在其中就像建议的一些答案一样没有意义:它不再是默认的构造函数。
我现在没有IDE(在手机上),但我认为您应该能够从创建类的新实例的语句中进入默认构造函数,例如,从一行像这样:
Something something = new Something();
然而,重点是什么?默认构造函数为空,因此无需查看或调试。
如果要在默认构造函数创建类的实例时停止执行,则创建一个带有虚拟语句的无参数构造函数。 (当然,它不会,如前所述,将不会有默认构造函数。)
如果你不能编辑类的源代码,那么我不知道如何在默认构造函数中停止执行。我很想学习。