// 示例代码:Java 中的循环依赖
// 定义第一个类 A,它依赖于类 B
class A {
private B b;
public A(B b) {
this.b = b;
}
public void doSomething() {
System.out.println("A is doing something.");
b.doSomething();
}
}
// 定义第二个类 B,它依赖于类 A
class B {
private A a;
public B(A a) {
this.a = a;
}
public void doSomething() {
System.out.println("B is doing something.");
a.doSomething();
}
}
// 测试类,展示如何创建具有循环依赖的对象
public class CircularDependencyExample {
public static void main(String[] args) {
// 创建 A 和 B 的实例,形成循环依赖
B b = new B(null);
A a = new A(b);
b = new B(a);
// 调用方法,可能会导致无限递归
try {
a.doSomething();
} catch (StackOverflowError e) {
System.out.println("发生了栈溢出错误,因为存在循环依赖。");
}
}
}
A 类有一个 B 类型的成员变量,而 B 类也有一个 A 类型的成员变量。A 的构造函数接受一个 B 实例,B 的构造函数接受一个 A 实例。A 调用 B 的方法时,B 又调用 A 的方法,这样会导致无限递归,最终引发 StackOverflowError。上一篇:java归并排序
下一篇:java prometheus
Laravel PHP 深圳智简公司。版权所有©2023-2043 LaravelPHP 粤ICP备2021048745号-3
Laravel 中文站