You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在IntelliJ调试Kotlin时显示kotlin.time.Duration的toString()结果

IntelliJ IDEA调试Kotlin Duration时,让调试器显示toString()结果

问题场景

使用Kotlin的kotlin.time.Duration对象时,通过println能输出格式化后的结果(如"1h"),但在IntelliJ调试器中查看变量时,默认显示的是其底层存储的长整型数值(如7200000000000)。示例代码:

val test: Duration = 1.hours
println(test) // 控制台输出:"1h"

调试器默认显示:

test: long = 7200000000000

解决方法

方法一:全局配置自定义类型渲染器(永久生效)

  1. 打开IntelliJ设置(快捷键Ctrl+Alt+S,或通过File → Settings)
  2. 导航到Build, Execution, Deployment → Debugger → Data Views → Kotlin
  3. 在「Type Renderers」区域,点击+按钮添加新渲染器
  4. 按以下参数配置:
    • 类型名称:填写kotlin.time.Duration
    • 勾选「Use following expression」,输入toString()
    • 可选:勾选「Use in toString() view」和「Use in tree view」,确保所有调试视图都应用该规则
  5. 保存设置后,重启当前调试会话,即可看到Duration变量显示为格式化后的字符串。

方法二:临时切换toString视图(单次生效)

在调试会话中:

  • 选中目标Duration变量,右键选择View as → toString()
  • 或点击变量右侧的「更多选项」按钮(...),选择「View as toString()」
    这种方式仅对当前调试会话的该变量生效,适合临时查看需求。

原因说明

Kotlin的Duration是inline class,底层基于长整型存储时间值,IntelliJ调试器默认会优先展示inline class的底层原始值,而非其重写的toString()返回的格式化结果,因此需要手动配置渲染规则来改变显示方式。

内容的提问来源于stack exchange,提问作者Daniel Machnik

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.01 16:32:09