类对象调用getClass方法报错StackOverflowError

类对象创建到方法上面就会报错异常,创建在方法里面则正常运行

package Test;

import java.util.Date;

public class SuperTest extends Date {
    SuperTest a = new SuperTest();
    private void test() {
//      SuperTest a = new SuperTest();
        System.out.println(a.getClass().getName());
    }
    public static void main(String[] args) {
        new SuperTest().test();
    }
}
运行结果:
D:\Tools\Java\jdk-17.0.1\bin\java.exe "-javaagent:D:\Program Files\JetBrains\IntelliJ IDEA 2022.1.2\lib\idea_rt.jar=14600:D:\Program 
 Files\JetBrains\IntelliJ IDEA 2022.1.2\bin" -Dfile.encoding=UTF-8 -classpath D:\ProjectWarehouse\IdeaProjects\JavaGUI\out\production\TAC2022 
  Test.SuperTest
Exception in thread "main" java.lang.StackOverflowError
    at Test.SuperTest.<init>(SuperTest.java:6)
    at Test.SuperTest.<init>(SuperTest.java:6)
package Test;

import java.util.Date;

public class SuperTest extends Date {
//      SuperTest a = new SuperTest();
    private void test() {
        SuperTest a = new SuperTest();
        System.out.println(a.getClass().getName());
    }
    public static void main(String[] args) {
        new SuperTest().test();
    }
}
运行结果:
D:\Tools\Java\jdk-17.0.1\bin\java.exe "-javaagent:D:\Program Files\JetBrains\IntelliJ IDEA 2022.1.2\lib\idea_rt.jar=14718:D:\Program 
 Files\JetBrains\IntelliJ IDEA 2022.1.2\bin" -Dfile.encoding=UTF-8 -classpath D:\ProjectWarehouse\IdeaProjects\JavaGUI\out\production\TAC2022 
  Test.SuperTest
Test.SuperTest

Process finished with exit code 0

public class SuperTest extends Date {
    //这里导致死循环了
    SuperTest a = new SuperTest();
    private void test() {
        System.out.println(a.getClass().getName());
    }
    public static void main(String[] args) {
        new SuperTest().test();
    }
}

new SuperTest() 构造函数,然后会初始化 SuperTest a = new SuperTest(); 这里又触发构造,循环往复导致堆栈满了