JAVA
public class A {
string amountA;
B b;
}
public class B {
string amountB;
public void setValue(String value) {
amountB = value;
另外,我需要设置amountA = value;。可能吗?参见主要方法
}
}
... main(String... args) {
A a = new A();
B b = a.getB(); // b is a member of A
b.setValue("25") // this should also change 'amountA' in object 'a' to '25'
}
答案 0 :(得分:1)
如果您需要将valueA
和ValueB
设置为相同的value
,那么在类A
中设置一个可以设置它们的setter更有意义:
public void setValue(String value) {
amountA = value;
b.setValue(value);
}
您无法从B的实例中访问A的实例,因为B不是A的内部类。您可以创建与A的任何实例完全无关的B实例。
答案 1 :(得分:0)
public class A {
public class B {
string amountB;
public void setValue(String value) {
amountB = value;
amountA = value; // Using A.this.amountA
}
}
string amountA;
public B createB() {
return new B(); // Provides A.this to the B instance.
}
}
... main(String... args) {
A a = new A();
B b = a.createB(); // b is created inside A
b.setValue("25") // this should also change 'amountA' in object 'a' to '25'
}
您可以使用内部类。
类本身应该更好地创建实例,以便将A.this
设置为b
。
可选地
B b = a.new B();
但我从来没有用过它。
内部类对于可以访问其容器类的容器元素是实用的。
另一个解决方案是使用B对象作为参数在A中创建一个方法。
答案 2 :(得分:0)
听起来你想要从B得到A 派生而不是包含 B的实例。这样,A的实例中的valueA和a中的valueA与该A实例关联的B实例实际上是同一个变量。您也可以通过在A中声明A中未与B共享的数据。例如,
public class A extends B {
public String amountAonly; // a string in A that's not in B
public B getB() { return (B)this; } // typecast to treat A like B
}
public class B {
public String amountA; // a string that's in both A and B
public void setValue(String value) {
amountA = value;
}
}
...
main(String[] args) {
A a = new A();
B b = a.getB(); // b is the B associated with a
b.setValue("25"); // will also change 'amountA' in object 'a' to '25'
}