IDEA Android Studio toString 模板设置

[TOC]

为什么要更改 toString 格式

在实际开发中,经常需要对 entity 实例调试的时候重写 toString 方法来输出日志
而IDEA 默认的模板不是 json 格式化的,日志调试起来不是很方便

更改方法

打开任意一个 java 类
按组合键

  • win or linux alt + ins
  • mac cmd + n
image.png

选择 toString() 出现弹窗,选择右上角的 Settings

image.png

切换选项卡到 Templates,并点击左侧的 +

image.png

出现窗口

image.png

输入模板名称 String toJsonString 点击ok

左侧分栏勾选 String toJsonString,在右侧输入内容为

public java.lang.String toString() {
#if ( $members.size() > 0 )
#set ( $i = 0 )
    return "\"$classname\": {" +
#foreach( $member in $members )
#if ( $i == 0 )
    "##
#else
    ", ##
#end
#if ( $member.objectArray )
#if ($java_version < 5)
\"$member.name\":" + ($member.accessor == null ? null : java.util.Arrays.asList($member.accessor)) +
#else
\"$member.name\":" + java.util.Arrays.toString($member.accessor) +
#end
#elseif ( $member.primitiveArray && $java_version >= 5)
\"$member.name\":" + java.util.Arrays.toString($member.accessor) +
#elseif ( $member.string )
\"$member.name\": \"" + $member.accessor + '\"' +
#else
\"$member.name\": \"" + $member.accessor +
#end
#set ( $i = $i + 1 )
#end
    '}';
#else
    return "\"$classname\":{}";
#end
}

然后确认后选择模板

image.png

这样 toString 的结果就是Json了

额外配置

String toJsonString and super.toString()

public java.lang.String toString() {
#if ( $members.size() > 0 )
#set ( $i = 0 )
    return "\"$classname\":{" +
#foreach( $member in $members )
#if ( $i == 0 )
    "##
#else
    ", ##
#end
#if ( $member.objectArray )
#if ($java_version < 5)
\"$member.name\":" + ($member.accessor == null ? null : java.util.Arrays.asList($member.accessor)) +
#else
\"$member.name\":" + java.util.Arrays.toString($member.accessor) +
#end
#elseif ( $member.primitiveArray && $java_version >= 5)
\"$member.name\":" + java.util.Arrays.toString($member.accessor) +
#elseif ( $member.string )
$member.name='" + $member.accessor + '\'' +
#else
\"$member.name\":" + $member.accessor +
#end
#set ( $i = $i + 1 )
#end
   #if ( $class.hasSuper )
   "} " + super.toString();
   #else
   '}';
   #end
#else
   #if ( $class.hasSuper )
   return "\"$classname\":{} " + super.toString();
   #else
   return "\"$classname\":{}";
   #end
#end
}
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 135,099评论 19 139
  • WebSocket-Swift Starscream的使用 WebSocket 是 HTML5 一种新的协议。它实...
    香橙柚子阅读 24,172评论 8 184
  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 173,964评论 25 709
  • 《ilua》速成开发手册3.0 官方用户交流:iApp开发交流(1) 239547050iApp开发交流(2) 1...
    叶染柒丶阅读 11,071评论 0 11
  • 前两天和朋友谈起了“北漂”,大概是渗透在词语里的伤感基调让我一直难以喜欢这种说法。没有归宿也没有明路,“漂”...
    戴扳指的付先生阅读 855评论 10 7