2015-09-03 3 views
2

Сегодня я увидел класс, похожий на это на моем рабочем месте:переменная класса, имеющие один и тот же тип самого класса

public class A { 
    private Map<String, A> myMap = Maps.newHashMap(); 
} 

Код компилируется, работает и делает то, что предполагают, чтобы сделать. Но он может быть реорганизован на другой дизайн. Но я не понимаю, почему этот дизайн был выбран.

Вы можете сделать глупые вещи, как это:

this.myMap.get("x").myMap.get("x").myMap.get("x");

Мой вопрос:

Есть ли действительно хорошая ситуация, когда нам нужно применить такую ​​конструкцию? Зачем?

ответ

2

Дерево сразу приходит в голову: узел содержит список узлов.

У человека есть дети, которые тоже являются людьми, и у которых могут быть дети.

+1

Для расширения это, вероятно, имеет смысл: 'public class Person {Map relationshipMap}' где 'relationshipMap' - это коллекция людей, а строка описывает отношения (мать, отец, ребенок и т. Д.), –

Смежные вопросы