Android Studio - как различить два вложенных объекта в отладчике?

Допустим, у меня есть объект с множеством вложенных объектов и переменных с именем credential:

После возобновления работы программы и повторного входа в игру снова под другим логином:

Каков лучший способ различить эти два объекта сразу? .например accountName (String), isNew (логические) переменные и так далее.

Я попытался "Копировать значение", а затем "Сравнить значение с буфером обмена", но он смог сравнить только одну текстовую переменную. "Просмотр текста" тоже самое.

Я также попытался "Отметить объект...", но его объект будет потерян и не будет сохранен (повторный ввод класса переопределит объект):

Так есть ли способ сравнить два сложных и вложенных значений объекта?

[ОБНОВИТЬ]

Я понял, что могу нажать Shift OR Ctrl+A, чтобы выделить все, а затем Ctrl+C, чтобы скопировать, но все равно он не будет включать вложенный объект, не раскрывая их по одному:

[ОБНОВЛЕНИЕ 2]:

Я заметил shadow$__klass_ Объект, кажется, содержит себя и вызывает бесконечные вложенные атрибуты. Но это можно решить, если я могу исключить это имя объекта ИЛИ ограничить максимальную вложенную глубину?

1 ответ

Вы можете разработать служебный метод и оставить его где-нибудь в своем проекте, который принимает два объекта, и вызвать его в окне отладчика eval expression и увидеть разницу.

Вы можете использовать некоторую библиотеку отражений или разработать свою собственную, это может работать следующим образом: пройтись по полям объекта с помощью отражения и построить карту, где ключ содержит составной путь полей (например, fieldA.fieldANested.number) и значение, которое оно имеет. Тогда эти две карты для двух объектов можно будет очень легко сравнить, и вы сможете увидеть разницу в вашем отладчике.

Другие вопросы по тегам