调用只包含print语句的方法时,我收到了StackOverflowError溢出异常。
以下是代码
public class Dog {
Dog dog = new Dog();
public static void main(String args[]){
new Dog().bark();
}
public void bark(){
System.out.println("Bark");
}
}
但是当我删除Class变量(dog)时,代码工作正常。
答案 0 :(得分:3)
你的问题在这里:
public class Dog {
Dog dog = new Dog(); // ************** HERE ************
public static void main(String args[]){
new Dog().bark();
}
public void bark(){
System.out.println("Bark");
}
}
你的Dog类正在创建一个新版本的自身,只要调用new Dog()
创建自己的版本,它创建自己的版本,创建自己的版本,创建自己的版本,创建自己的版本,创建自己的版本,创建自己的版本,创建自己的版本等...
解决方案:除了主要方法之外,不要在Dog类中创建new Dog()
!请注意,在其他时候可以在其自身内创建对象的新实例,但在执行此操作时始终注意可能的递归。