繁体   English   中英

创建对象后,是否可以看到默认的构造函数调用? 在java中

[英]Can I see default constructor call Once object is creating | in java

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

public class A {

}

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

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

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

除非您具有一些业务逻辑,否则将不会使用调试。 否则为空。

但是可以。

public class A {

    /* Default no arg constructor */
    public A(){
       System.out.println("Put a break point at this line");
     }
    }

您仍然可以在没有JVM内部插入默认构造函数的情况下运行此代码。

如果要添加一些功能,则需要手动编写。

没有直接的方法。

您可以定义默认构造函数并在其中打印一些内容。

class A {
  public A() {
    System.out.println("constructor is called");
  }
}

现在,当您在Main class中创建A类的实例时,将打印该消息。 您可以将调试点放入print语句中,然后查看运行时光标。

你为什么还要这么做? jls所述:

如果要声明的类是原始类Object,则默认构造函数的主体为空。 否则,默认构造函数将简单地调用不带参数的超类构造函数。

因此,没有什么有趣的看到的。 只需调用默认构造函数,直到Object 至于调试问题,这在很大程度上取决于您使用的调试器。

由于默认构造函数在定义上为空,因此像建议的一些答案一样将代码放入其中是没有意义的:它将不再是默认构造函数。

我现在没有(电话上)有一个IDE,但是我认为您应该能够从创建该类的新实例的语句进入默认构造函数,例如,从这样的一行开始:

Something something = new Something();

但是,有什么意义呢? 默认构造函数为空,因此没有任何内容可查看或调试。

如果要在默认构造函数创建类的实例时停止执行,请创建一个无参数构造函数,并在其中创建一个伪语句。 (当然,不会,不再有默认的构造函数,如前所述)。

如果您无法编辑该类的源代码,那么我不知道如何在默认构造函数中停止执行。 我会很感兴趣学习。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM