Обход объекта найма - PullRequest
       1

Обход объекта найма

2 голосов
/ 30 ноября 2011

Я ищу способы обойти произвольную иерархию объектов в Java.Очевидно, что прямое использование API отражения - это один из вариантов, но какие библиотеки построены на нем, что может облегчить задачу?

В частности, я хочу получить все объекты, на которые ссылаются прямо или косвенно, из базового объекта, который реализуетданный интерфейс.Иерархия может содержать циклы, хотя объекты, которые я ищу, образуют DAG, поэтому в идеале я бы хотел, чтобы они возвращались в топологическом порядке.

Ответы [ 2 ]

3 голосов
/ 30 ноября 2011

Вы уже смотрели на Apache BeanUtils? -> http://commons.apache.org/beanutils/

Я не знаю, охватывают ли они все, что вам нужно, но это довольно хорошо и просто в использовании.

1 голос
/ 30 ноября 2011

Вот предложение. Если ваши объекты реализуют интерфейс MyObject, следующее будет проходить и извлекать все компоненты в map.

public interface MyObject{
      String getName();
      void addChild(MyObject obj);
      MyObject[] getChildren();
}   

// This will visit and extract all children
public void visitMyObject(MyObject cmp, Map hashMap){
      // Add this component
      if(cmp != null) hashMap.put(cmp.getName(), cmp);
      // Go visit all children
      for(MyObject subComponent : cmp.getChildren()){
          visitMyObject(subComponent, hashMap);
      }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...