[英]Ways to find where an object is contained in Java?
我正在声明一个类。
public class StatusMessage {
private Status status;
private String message;
private Throwable throwable;
private List<StatusMessage> children;
getters ; setters;
}
通过添加子级,这使我可以像StatusMessages一样构成一棵无尽的树。
添加子代码的示例代码。
StatusMessage parent =new StatusMessage(status,message);
parent.getChildren().add(new StatusMessage(status,message));
parent.getChildren().add(new StatusMessage(status,message));
parent.getChildren().add(new StatusMessage(status,message));
StatusMessage child1 =new StatusMessage(status,message);
parent.getChildren().add(child1);
StatusMessage child1_1 =new StatusMessage(status,message);
child1.getChildren().add(child1_1);
....
有什么办法可以让我发现child1是child1_1的父级,类似地从最低层到根?
我想通过不在子级中添加对父级的引用来实现此目的。 用Java有什么办法吗? 有什么建议么?
如前所述,如果字段中没有显式引用,则Java中无法找到引用所讨论对象的对象。
如果您有这样的要求,最简单的方法实际上是将parent
字段添加到类StatusMessage
。 但请确保正确处理:
删除内部子项List
的吸气剂。 状态消息之外的任何人都不得操作该列表。 实际上,该列表是实现细节。
而是将addChild
或addToParent
方法(或两者)添加到您的类。 这些方法必须正确处理父子关系:
public void addChild(StatusMessage child) {
if (child.parent != null) {
child.parent.children.remove(child);
}
child.parent = this;
children.add(child);
}
public void addToParent(StatusMessage parent) {
if (this.parent != null) {
this.parent.children.remove(this);
}
this.parent = parent;
this.parent.children.add(this);
}
不,您无法找出哪些对象引用了特定对象。
您可能只想添加一个parent
字段(并确保正确设置)。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.