Я ищу способ узнать, имеет ли тип, скажем, DataContainer
, элемент (или даже возвращаемое значение) некоторого типа Type
.Я ищу способ проверить, есть ли у DataContainer
или любого из членов DataContainer
член типа Type
.Я хочу сделать это рекурсивно.
Простой поиск всех значений Type
невозможен, так как могут быть буквально тысячи совпадений.(Это большая старая кодовая база, срок рефакторинга которой составляет около 10 лет, что, вероятно, никогда не произойдет).
Ограничение области действия при поиске пользователей Type
будет работать в некоторых случаях (не все), но может быть очень медленным.
class Sub1 {
Type type;
}
class WrongContainer {
int foo;
}
class CorrectContainer {
Type type;
Sub1 sub1;
}
В этом случае я ожидаю, что мне скажут, что у CorrectContainer
есть два способа получить Type
;прямой доступ к объекту или доступ через sub1
.
Я бы предпочел инструмент поиска в IntelliJ IDEA, но на самом деле открыт для любых предложений.Я мог бы (но предпочел бы не) решить эту проблему с помощью некоторого отражения.