Android Studio - как различить два вложенных объекта в отладчике?
Допустим, у меня есть объект с множеством вложенных объектов и переменных с именем credential
:
После возобновления работы программы и повторного входа в игру снова под другим логином:
Каков лучший способ различить эти два объекта сразу? .например accountName
(String), isNew
(логические) переменные и так далее.
Я попытался "Копировать значение", а затем "Сравнить значение с буфером обмена", но он смог сравнить только одну текстовую переменную. "Просмотр текста" тоже самое.
Я также попытался "Отметить объект...", но его объект будет потерян и не будет сохранен (повторный ввод класса переопределит объект):
Так есть ли способ сравнить два сложных и вложенных значений объекта?
[ОБНОВИТЬ]
Я понял, что могу нажать Shift OR Ctrl+A, чтобы выделить все, а затем Ctrl+C, чтобы скопировать, но все равно он не будет включать вложенный объект, не раскрывая их по одному:
[ОБНОВЛЕНИЕ 2]:
Я заметил shadow$__klass_
Объект, кажется, содержит себя и вызывает бесконечные вложенные атрибуты. Но это можно решить, если я могу исключить это имя объекта ИЛИ ограничить максимальную вложенную глубину?
1 ответ
Вы можете разработать служебный метод и оставить его где-нибудь в своем проекте, который принимает два объекта, и вызвать его в окне отладчика eval expression и увидеть разницу.
Вы можете использовать некоторую библиотеку отражений или разработать свою собственную, это может работать следующим образом: пройтись по полям объекта с помощью отражения и построить карту, где ключ содержит составной путь полей (например, fieldA.fieldANested.number
) и значение, которое оно имеет. Тогда эти две карты для двух объектов можно будет очень легко сравнить, и вы сможете увидеть разницу в вашем отладчике.