我可以看到默认构造函数调用一旦对象正在创建|在java

时间:2015-10-05 15:15:02

标签: java default-constructor

只是一个公共类A,它将具有由JVM定义并在运行时调用的默认构造函数

public class A {

}

主类有main方法,它将创建类A的对象并自动调用类A的默认构造函数。

public class Main {
    public static void main(String[] args) {
        A a = new A();
    }
}

我是否可以进行调试,并且可以看到最终调用A类默认构造函数的游标流?

4 个答案:

答案 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();

然而,重点是什么?默认构造函数为空,因此无需查看或调试。

如果要在默认构造函数创建类的实例时停止执行,则创建一个带有虚拟语句的无参数构造函数。 (当然,它不会,如前所述,将不会有默认构造函数。)

如果你不能编辑类的源代码,那么我不知道如何在默认构造函数中停止执行。我很想学习。