【java】toString() 导致的 StackOverflowError 异常

这是怎么导致的呢?

A 类属性包含着 B 类的引用

B 类属性包含着 A 类的引用

代码大概就是这样的:

@Data
public class User{
	public String name;
	public Dog dog;
}

@Data
public class Dog{
	public String name;
	public User user;
}

User user = new User()
Dog dog = new Dog()
user.setDog(dog);
dog.setDog(user);

System.out.println(user.toString())

当打印 toString 的时候,user 就需要打印属性,找到引用属性 dog 的 toString,而 dog 也找到引用属性 user 的 toString。

就这样不断循环套娃下去,最后 StackOverflowError

【java】toString() 导致的 StackOverflowError 异常_第1张图片

推荐个非常好用的 AI 网站,不断发展中:shushiai.com/aigc

你可能感兴趣的:(bug,java,开发语言,bug)