У меня есть класс, который объявлен как.Способы найти, где объект содержится в 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? Какие-либо предложения?
К сожалению, можно думать только о способах, которые были бы ужасно более сложным, чем просто добавление родителя. –
Если у детей нет ссылки на родителя, я не вижу никакого способа выполнить то, что вы хотите. Возможно, если вы можете привести пример того, как вы планируете пересекать дерево 'StatusMessage', это поможет нам дать вам лучший ответ. –
Если сообщение статуса не знает его родителя или коллекцию, к которой он был добавлен, как вы можете узнать, где он находится? Вы должны пройти его из корня: [List.contains] (http://docs.oracle.com/javase/8/docs/api/java/util/List.html#contains-java.lang.Object-) является ваш друг. Но для требования, которое вы отправили, самым простым способом было бы добавить родительское поле. – Seelenvirtuose