我试图正确地调用一个构造函数来处理3个不同的类,但是我做不到
public class B {
private final A a;
public B(A a) {
this.a = a;
}
private final C c = new C(a);
}
我有一个错误“变量a可能尚未初始化”,我知道一种方法,可以在B构造函数中放置第二个参数,然后在主类B中调用它,但是还有其他方法吗? >
答案 0 :(得分:2)
好的。
public class B {
private final A a;
public B(A a) {
this.a = a;
c = new C(a);
}
private final C c;
}
您不起作用的原因是声明时的初始化程序要在构造函数之前执行。
答案 1 :(得分:1)
这里:
private final C c = new C(a);
只需在构造函数中分配c
也,就可以避免顺序的“冲突”:
public B(A a) {
this.a = a;
this.c = new C(a);
}
当然,当您可以在声明处定义字段时,这将大大简化。但是有时候,无法避免在构造函数中这样做。
答案 2 :(得分:0)
初始化ctor中的值
public class B {
private final A a;
private final C c;
public B(final A a) {
this.a = a;
this.c = new C(a)
}
}