Продукт.
Если у вас много таких классов, и вы хотите в общем следовать обратным ссылкам, наследуйте от интерфейса HasParent, который имеет абстрактный метод parent (), а родители наследуют для интерфейса Parent. Но в остальном, следуя графу объектов или приведению типов, мало что можно сделать с Родителем.
РЕДАКТИРОВАТЬ: на самом деле, позвольте мне изменить это. Я работал над проектом, в котором у нас был полусложный граф объектов, и из-за плохого планирования и некоторых изменений требований иногда мне приходилось тянуться по всему графику, чтобы получить данные из связанного объекта. ComponentCost для его родительского элемента Cost для его родительского элемента, для его дочернего CustomsInfo для его дочернего ComponentCustomsInfo для его таблицы поиска DutyCalculation. (Да, я не делал оригинальный дизайн, так что не хмурись на меня.)
Метод parent()
мог бы сделать это немного более общим. (В конце концов я собрал набор перечислений (перечисления Java, то есть одноэлементные классы), которые прошли для меня график безопасным и даже элегантным способом. Тем не менее, наличие родителя сделало бы реализацию проще.)