【发布时间】:2017-03-09 13:34:39
【问题描述】:
我有以下代码:
public class A {
private String name;
private List<B> bs;
public A(String name) {
this.name = name;
this.bs = new ArrayList<>();
}
public void addB(B b) {
bs.add(b);
}
public List<B> getBs() {
return bs;
}
}
public class B {
private String name;
public B(String name) {
this.name = name;
}
public String toString() {
return name;
}
}
还有以下主要内容:
public static void main(String[] args) {
A a1 = new A("A1");
A a2 = new A("A2");
B b1 = new B("B1");
B b2 = new B("B2");
B b3 = new B("B3");
a1.addB(b1);
a2.addB(b2);
a1.addB(b3);
System.out.println(a1.getBs()); // [B1, B3]
b3.getA(); // How can I do this? => Should return A1
}
现在我需要获取给定 A 的所有 B。效果很好。
但我还需要获取给定 B 的 A。
每个B都是独一无二的。所以每个B只能是一个A的成员。
最好的方法是什么?
【问题讨论】:
-
"每个 B 都是独一无二的。所以每个 B 只能是一个 A 的成员。" a1.addB(b1); a2.addB(b1);
-
使用两个参数将
B构造函数包设为私有:B(String name, A parent),并将A引用存储在B中。然后向A添加一个方法:public B createB(String name),它将这个构造函数调用为return new B(name, this);。这样你就可以创建B到A。如果没有B就不能“活”没有A,你甚至可以将它定义为A的内部类。
标签: java list collections java-8