Intellij中的数据类型呈现器?

时间:2014-02-14 05:10:29

标签: java intellij-idea

最近转换为Intellij。 Eclipse在调试器中有一个功能," Primitive Display Options",它具有十六进制和ascii值的调试器渲染基元。

Eclipse Debugger

因为Intellij到目前为止一切都变得轻而易举,我认为这不是一件容易的事情,但是经过一个小时和一些非功能性的数据类型渲染之后,我发现自己已经准备好爬回到eclipse。我做了一些有效的渲染器,但仅用于对象,所以我只能得出结论,渲染器似乎不适用于原语。有人能指出我在正确的方向吗?

编辑:我已经看到了在默认渲染中选择十六进制的选项,但我希望的不仅仅是每个变量需要2次点击的解决方案。

6 个答案:

答案 0 :(得分:18)

我的解决方案是使用byte[]的以下表达式提供自定义数据类型渲染器:new String(Hex.encode(this));

默认情况下,只要启用了数据类型渲染器(在应用程序重新启动时保持状态等),它就会起作用。如果您愿意,可以添加更精细的字符串格式(我通常有一个实用程序类可以进一步格式化,我只是从DTR表达式字段调用它。)

Data Type Renderer

Debugger view

答案 1 :(得分:9)

对于整数值(即,既不是浮点值也不是布尔值),您可以通过右键单击调试器中的基元并选择“查看为” - >将它们视为十六进制值。 “十六进制”。

enter image description here

默认情况下,数据类型渲染器功能仅适用于对象,表示基元的唯一现实方式是作为其整数值或以十六进制表示,所以我认为这是一个愉快的妥协。

答案 2 :(得分:3)

  

我制作了一些有效的渲染器,但仅限于物体,所以我可以   只得出结论,渲染器似乎不适用于原语。

借助IDEA 2016.3,它最终可以为基本类型(包括数组)定义自定义Java数据类型渲染器。

https://www.jetbrains.com/idea/whatsnew/#v2016-3

答案 3 :(得分:2)

有一个选项(复选框)可永久更改所有基元,以在数据视图选项下显示为十六进制。参见:

设置> 构建,执行,部署> 调试器> 数据视图> Java >

"Show hex value for primitives"

enter image description here

答案 4 :(得分:1)

这与Andy的解决方案类似,但不要求您定义byte[]类(他甚至没有提到)。仅适用于Java8项目(即目前不在Android上)。

您必须使用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?"...":"") 的以下表达式提供自定义数据类型渲染器(请参阅Andy's answer):

{{1}}

它将格式化数据,使得“01020304 05060708 09”,即按4分组并用空格分隔。只显示前80个字节,如果还有更多,则添加省略号。

答案 5 :(得分:-1)

您还可以尝试DeltaHex Editor plugin用于基于IntelliJ的IDE,它可以在调试器中显示具有典型十六进制+文本预览的窗口,用于字节数组。

DeltaHex Editor Plugin Debug Byte Array Image

插件位于“设置/插件/浏览存储库/搜索DeltaHex

”中