Java 在这种情况下,如何正确调用构造函数?
我试图调用一个构造函数来正确处理3个不同的类,但我不能这样做Java 在这种情况下,如何正确调用构造函数?,java,constructor,field,Java,Constructor,Field,我试图调用一个构造函数来正确处理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中调用它,但还有其他方法吗?这里: private final C c = new C(a); 在这里,您可以通过简单地在构造函数中
public class B {
private final A a;
public B(A a) {
this.a = a;
}
private final C c = new C(a);
}
我有一个错误“变量a可能尚未初始化”,我知道一种方法,在B构造函数中放入第二个参数并在主类B中调用它,但还有其他方法吗?这里:
private final C c = new C(a);
在这里,您可以通过简单地在构造函数中分配c
来避免顺序的“冲突”:
public B(A a) {
this.a = a;
this.c = new C(a);
}
当然,当您可以在声明中定义字段时,这会简化很多。但有时,在构造函数中执行它是不可避免的。当然
public class B {
private final A a;
public B(A a) {
this.a = a;
c = new C(a);
}
private final C c;
}
您的不起作用的原因是声明中的初始值设定项在构造函数之前执行。初始化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)
}
}
为什么在B构造函数中需要第二个参数?只需声明
private final C然后在构造函数中,c=newc(a)代码>只是想知道:你需要进一步的信息吗?或者你的问题被解决了(如果是的话,考虑接受一个答案)。谢谢你所有的答案!