Это немного сложно объяснить. У меня есть класс A:
public class A {
private Integer a1;
private Integer a2;
// getters and setters.
}
Существует статический класс B, который возвращает мой класс A:
public static class B {
public static A getCurrentA() {
return a;
}
}
Мне нужно найти все применения класса A , возвращаемого B. Итак, скажем, класс C вызывает c.setA(B.getCurrentA())
, а затем далее там вызов c.getA().getA2();
, я бы хотел найти все это.
В реальном сценарии у меня есть 217 разных классов, которые вызывают B.getCurrentA()
. Я не могу вручную выполнить все вызовы в Eclipse и узнать, какие методы получаются.
В представлении иерархии вызовов Eclipse отображаются только все вызовы B.getCurrentA()
.
Как я могу это достичь?
ИЗМЕНИТЬ
Крис Хейс понял, что я хочу делать. Чтобы реорганизовать какой-то действительно плохой унаследованный код, не нарушая работу всей системы, мне нужно сначала настроить некоторые запросы с помощью прогнозов Hibernate (каждый сопоставленный объект в системе загружен, и многие объекты связаны друг с другом, поэтому некоторые запросы занимают LONG время извлечения всего). Но сначала мне нужно найти, какие свойства используются, чтобы я не получал исключение NullPointerException где-то...Вот пример того, что мне нужно сделать вручную:
- Используйте Eclipse Search, чтобы найти все вызовы B.getCurrentA();
-
Откройте первый найденный метод, скажем так:
public class CController { C c = new C(); CFacade facade = new CFacade(); List<C> Cs = new ArrayList<C>(); public void getAllCs() { c.setA(B.getCurrentA()); // found it! facade.search(c); } }
-
Откройте метод поиска в классе CFacade:
public class CFacade { CBusinessObject cBo = new CBusinessObject(); public List<C> search(C c) { // doing stuff... cBo.verifyA(c); cBo.search(c); // yes, the system is that complicated } }
-
Откройте метод verifyA в классе CBusinessObject и определите, что используется поле a2:
public class CBusinessObject { public void verifyA(c) { if (Integer.valueOf(1).equals(c.getA().getA2())) { // do stuff else { // something else } } }
-
Повторите шаги 2-4 для следующих 216 совпадений... Yay.
Пожалуйста, помогите.