繁体   English   中英

如何找到Java中包含对象的位置?

[英]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 但请确保正确处理:

  1. 删除内部子项List的吸气剂。 状态消息之外的任何人都不得操作该列表。 实际上,该列表是实现细节。

  2. 而是将addChildaddToParent方法(或两者)添加到您的类。 这些方法必须正确处理父子关系:


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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM