public static class A {
public final int aa;
//新增一个属性
public int bb;
...
}
public static final class B {
final A a;
B(A z) {
a = z;
}
...
}
public void C() {
final B b = getB();
//给新增的属性bb赋值
b.a.bb = 1;
}
public B getB() {
...
return new B(new A());
}
想给class A新增一个属性bb,并在方法C中给bb赋值,但是编译报错cannot find symbol
symbol: variable bb
location: variable a of type A
帮忙看一下,谢谢啦。
如果有用,记得采纳
是因为类A中的属性aa是final,不能被修改,因此无法通过b.a.bb = 1语句给bb赋值。为了解决这个问题,可以在类A中删除aa属性的final声明,或者给bb定义一个默认值,这样就可以通过b.a.bb = 1语句给bb赋值了。
“该回答引用ChatGPT”
可以参考下面的方法,如果可行,还请采纳,感谢:
可能是因为你在class A中定义了一个final属性aa,但是没有对bb进行初始化,所以编译器报错:找不到变量bb。
要解决这个问题,可以在class A的构造函数中初始化bb,或者在方法getB中创建A对象时初始化bb。
看起来你给class A新增的属性bb没有正确声明。在class A中,你需要在public final int aa之后添加public int bb;这样,方法C()就可以正确访问到bb属性并且给它赋值了。
回答:似乎没有什么问题,你对比一下