Как использовать переменные средства форматирования Netbeans? - PullRequest
5 голосов
/ 27 октября 2011

По умолчанию при просмотре наблюдения / переменных объектов в Netbeans он показывает его адрес вместо значения.Это довольно утомительно, так как мне нужно расширить переменную, чтобы увидеть ее реальное значение (например, для Double, Integer, Date и т. Д.).Как выясняется, в Netbeans есть «Переменные форматеры», но я вряд ли смогу найти для него какую-либо документацию.

Как бы мне было показать, например, простую переменную Date в удобочитаемом формате в Watches /Окно переменных?Я не совсем понимаю диалоговое окно «Редактирование форматера переменной».

Я смог правильно сделать это для двойного и целого числа, используя следующий фрагмент кода: toString()

Итак, кодкажется, работает в контексте класса Double / Integer.Как бы я сослался на фактическую переменную, если мне нужно сделать что-то более сложное, например:

return DateHelpers.formatDate(dateVariableName??, "yyyy-MM-dd");

Ответы [ 3 ]

6 голосов
/ 27 октября 2011

В представлении переменных у вас есть маленький значок $ (в левом верхнем углу), подсказка которого гласит: «Показать значение переменной как toString () или отформатированное значение».

Просто нажмите на нее, она покажетВы «значение» этих переменных.

РЕДАКТИРОВАТЬ: Если вы хотите добавить форматер переменной, это очень просто.В представлении переменной форматера просто нажмите кнопку «Добавить ...», затем:

  • В поле «Имя форматера» введите имя вашего редактора, например."My Date formatter"
  • "Типы классов" введите ваше полное имя класса, например.java.util.Date
  • Выберите «Значение, отформатированное в результате фрагмента кода» и введите код для применения.Например:

toString()

но если вы хотите манипулировать данными или отображать какую-то другую вещь, вы можете.Например:

toString() + " (" + getTime() + ")"

, который будет отображать время в удобочитаемом формате и время в длинном.

Не забудьте выбрать значок $ в представлении, чтобы применить ваш форматтер.

2 голосов
/ 22 мая 2015

Мой ответ не решит вопрос. Это будет скорее повторять предыдущие ответы. Во-первых, я не видел знака $ на панели переменных в NetBeans. Кажется, оно было заменено контекстным меню в текущих версиях.

Я не нашел ответа на реальный вопрос о том, как бы вы ссылались на переменную для отладки, в диалоге «Форматировщики переменных». Нечто подобное «это» или «1 доллар» определенно не работает. Также средство, кажется, не знает о стандартных классах Java JRE, таких как SimpleDateFormatter.

Так что при отладке классов Java JRE, я думаю, вы должны жить с тем, что они предлагают с точки зрения открытых методов.

Вот обходной путь для особенно удобного класса Date, если вы застряли с JDK ниже версии 8 (как я). Просто создайте новый модуль форматирования переменных в NetBeans с помощью

Tools > Options > Java > Variable Formatters > Add

Затем в поле редактирования "Типы классов" введите:

java.util.Date

В разделе «Значение, отформатированное в результате фрагмента кода», используйте один из следующих фрагментов.

// German format - "dd.MM.yyyy hh:mm"
((getDate() < 10) ? ("0" + getDate()) : getDate()) + "." + ((getMonth() < 9) ? ("0" + (getMonth() + 1)) : (getMonth() + 1) ) + "." + (getYear() + 1900) + " " + ((getHours() < 10) ? "0" + getHours() : getHours()) + ":" + ((getMinutes() < 10) ? "0" + getMinutes() : getMinutes()) + ":" + ((getSeconds() < 10) ? "0" + getSeconds() : getSeconds())

// US format - "MM/dd/yyyy hh:mm"
((getMonth() < 9) ? ("0" + (getMonth() + 1)) : (getMonth() + 1) ) + "/" + ((getDate() < 10) ? ("0" + getDate()) : getDate()) + "/" + (getYear() + 1900) + " " + ((getHours() < 10) ? "0" + getHours() : getHours()) + ":" + ((getMinutes() < 10) ? "0" + getMinutes() : getMinutes()) + ":" + ((getSeconds() < 10) ? "0" + getSeconds() : getSeconds())

// ISO-8601 - "yyyy-MM-dd hh:mm"
(getYear() + 1900) + "-" + ((getMonth() < 9) ? ("0" + (getMonth() + 1)) : (getMonth() + 1) ) + "-" + ((getDate() < 10) ? ("0" + getDate()) : getDate()) + " " + ((getHours() < 10) ? ("0" + getHours()) : getHours()) + ":" + ((getMinutes() < 10) ? ("0" + getMinutes()) : getMinutes()) + ":" + ((getSeconds() < 10) ? ("0" + getSeconds()) : getSeconds())

Следующий фрагмент также может пригодиться, когда вы потеряли из-за избыточного отладочного вывода экземпляра java.util.Calendar:

// German format - "dd.MM.yyyy hh:mm"
((get(5) < 10) ? ("0" + get(5)) : get(5)) + "." + ((get(2) < 9) ? ("0" + (get(2) + 1)) : (get(2) + 1) ) + "." + (get(1)) + " " + ((get(10) < 10) ? "0" + get(10) : get(10)) + ":" + ((get(12) < 10) ? "0" + get(12) : get(12)) + ":" + ((get(13) < 10) ? "0" + get(13) : get(13))
1 голос
/ 13 февраля 2013

Вы даже можете поместить гораздо более сложный код в переменный форматер, если вы возвращаете строку.Например, если у меня есть класс с двумя строковыми членами, именем и фамилией, я могу вставить следующий код в поле «Значение в формате ..»:

String result;
if (name != null) {
  result = name + " " + surname;
} else {
  result = "<null>";
}
return result;

.. и для отображения в качестве дочерних элементов имении фамилию отдельно, вы можете вставить код в поле «Дети отображаются как ..», чтобы вернуть строку [], например:

String[] results = new String[2];
results[0] = "name: " + name;
results[1] = "surname: " + surname;
return results;

. В окне отладки переменных два узла будут отображаться как дочерние.имя и фамилия

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...