Тип данных Renderers в Intellij?
Недавнее преобразование в Intellij. Eclipse имеет функцию в отладчике, "Примитивные параметры отображения", которая имеет примитивы рендеринга отладчика в значениях hex и ascii.
![Eclipse Debugger]()
Поскольку в Intellij все было очень легко, я подумал, что это было бы неинтересно, но через час и ряд неработающих типов данных появится позже, я нахожусь готовым к ползучести назад к затмению. Я сделал несколько обработчиков, которые работали, но только для объектов, поэтому я могу только заключить, что рендереры, похоже, не работают для примитивов. Может ли кто-нибудь указать мне в правильном направлении здесь?
Изменить: я видел вариант выбора hex в рендеринге по умолчанию, но я надеюсь на что-то большее, чем на решение, для которого требуется 2 клика для каждой переменной.
Ответы
Ответ 1
Для интегральных значений (то есть ни значений с плавающей запятой, ни логических значений) вы можете просмотреть их как шестнадцатеричное значение, щелкнув правой кнопкой мыши на примитиве в отладчике и выбрав "View As" → "Hex".
![enter image description here]()
По умолчанию функция Data Type Renderer работает только с объектами, и единственным реалистичным способом представления примитива является либо его интегральное значение, либо шестнадцатеричный, поэтому я считаю, что это счастливый компромисс.
Ответ 2
Мое решение состояло в том, чтобы предоставить персонализированный визуализатор типов данных, используя следующее выражение для byte[]
: new String(Hex.encode(this));
.
Это работает по умолчанию, пока включен режим рендеринга типов данных (поддерживается состояние перезапуска приложений и т.д.). Вы можете добавить более сложное форматирование строк, если хотите (обычно у меня есть класс утилиты, который делает дальнейшее форматирование, и я просто вызываю его из поля выражения DTR).
![Data Type Renderer]()
![Debugger view]()
Ответ 3
Я сделал несколько обработчиков, которые работали, но только для объектов, поэтому я могу только вывод, что рендереры, похоже, не работают на примитивы.
С IDEA 2016.3 наконец можно определить пользовательские типы данных Java Data Type Renderers для примитивных типов (включая массивы).
https://www.jetbrains.com/idea/whatsnew/#v2016-3
Ответ 4
Это похоже на решение Andy, но не требует определения класса Hex
(о котором он даже не упоминает). Работает только для проектов Java8 (то есть не для Android в настоящее время).
Вы должны предоставить персонализированный визуализатор типов данных, используя следующее выражение для byte[]
(см. Andy answer):
IntStream.range(0,Math.min((this.length+3)/4,20)).mapToObj(i->IntStream.range(i*4,Math.min(i*4+4,_this.length)).mapToObj(i1->String.format("%02x",_this[i1])).collect(Collectors.joining())).collect(Collectors.joining(" "))+(this.length>80?"...":"")
Он будет форматировать данные так, чтобы "01020304 05060708 09", т.е. сгруппированы по четырем и разделены пробелами. Отображаются только первые 80 байт, добавляется многоточие, если их больше.
Ответ 5
Вы можете навсегда изменить все примитивы для отображения в шестнадцатеричном виде в опциях "Настроить параметры представления данных" в проводнике переменных (есть флажок для него) ![введите описание изображения здесь]()