操作实践,IDEA自定义toString()方法模板
声明:迁移自本人CSDN博客https://blog.csdn.net/u013365635
Java POJO在日志中常会用于打印,经常会将POJO的内容全部或部分打印出来,所以POJO类的toString()方法常要重写。
现在举一个例子
package com.test.lang;
public class SelfDefinedToString
{
String name;
int age;
String country;
String occupation;
@Override
public String toString() {
return "SelfDefinedToString{" +
"name='" + name + '\'' +
", age=" + age +
", country='" + country + '\'' +
", occupation='" + occupation + '\'' +
'}';
}
}
如果直接使用IDEA默认的自动代码生成器生成toString(),可能如上所示,其中使用了大量的字符串拼接,这样会产生很多的临时字符串对象,如果打印很多的话,对效率有不良影响。当然,IDEA已经给了我们一些备选项。如下图所示
IDEA自带的这些toString()生成模板,其实也透露出了一些语法规则。然后可以自己写一个模板出来。
/**
* {@inheritDoc}
*/
@Override
public java.lang.String toString()
{
final java.lang.StringBuilder sb = new java.lang.StringBuilder("$classname").append('[')
#set ($i = 0)
#foreach ($member in $members)
#if ($i == 0)
#if ($member.string)
.append("$member.name=")
#else
.append("$member.name=")
#end
#else
#if ($member.string)
.append(",$member.name=")
#else
.append(",$member.name=")
#end
#end
#if ($member.primitiveArray)
if ($member.name == null)
.append("null")
else {
.append('[');
for (int i = 0; i < $member.name .length; ++i)
.append(i == $member.name .length -1 ? "" : ", ").append($member.name [i])
.append(']');
}
#elseif ($member.objectArray)
.append($member.name == null ? "null" : java.util.Arrays.asList($member.name).toString())
#elseif ($member.string)
.append($member.accessor)
#else
.append($member.accessor)
#end
#set ($i = $i + 1)
#end
.append(']');
return sb.toString();
}
再看生成的代码
package com.test.lang;
public class SelfDefinedToString
{
String name;
int age;
String country;
String occupation;
/**
* {@inheritDoc}
*/
@Override
public String toString() {
final StringBuilder sb = new StringBuilder("SelfDefinedToString").append('[')
.append("name=")
.append(name)
.append(",age=")
.append(age)
.append(",country=")
.append(country)
.append(",occupation=")
.append(occupation)
.append(']');
return sb.toString();
}
}
其实自动生成器的模板可以跟着例子调成自己想要的样子。主要是要学会举一反三。
操作实践,IDEA自定义toString()方法模板的更多相关文章
- IDEA自定义liveTemplates(方法模板、类模板)
IDEA自定义liveTemplates(方法模板.类模板) 前言,搞这个模板有何意义? 降低大家写方法注释的成本,统一风格.有时候不是开发同学不爱写注释,而是没有合适的载体和空间. IDEA模板设置 ...
- Java基础(5):试用Array类对数据进行操作(Sort和toString方法)
Arrays 类是 Java 中提供的一个工具类,在 java.util 包中.该类中包含了一些方法用来直接操作数组,比如可直接实现数组的排序.搜索等 1. 排序 语法: Arrays.sort(数 ...
- 数组toString()方法,数组常用操作
int[] arr ={1,2,3,4,5}; String arrString = Arrays.toString(arr); //输出[I@7150bd4d System.out.println( ...
- Spring Security验证流程剖析及自定义验证方法
Spring Security的本质 Spring Security本质上是一连串的Filter, 然后又以一个独立的Filter的形式插入到Filter Chain里,其名为FilterChainP ...
- java泛型应用实例 - 自定义泛型类,方法
近 短时间需要使用泛型,就研究了下,发现网上的问关于泛型的文章都是讲原理的, 很少有提到那里用泛型比较合适, 本文就泛型类和泛型方法的使用给出两 个典型应用场景. 例如一个toString的泛型方法, ...
- 自定义tt文本模板实现MySql指数据库中生成实体类
自定义tt文本模板实现MySql指数据库中生成实体类 1.在项目中依次点击“添加”/“新建项”,选择“文本模板”,输入名称后点击添加. 2.在Base.tt中添加如下代码. <#@ templa ...
- 牛客网Java刷题知识点之字符流缓冲区、BufferedWriter、BufferedReader、BufferedReader-readLine方法原理、自定义MyBufferedReader-read方法、自定义MyBufferedReader-readLine方法
不多说,直接上干货! 把提高效率的动作,封装成一个对象.即把缓冲区封装成一个对象. 就是在一个类里封装一个数组,能对流锁操作数据进行缓存. 什么是字符流缓冲区? 善于使用字符流缓冲区,减轻负担,提高下 ...
- JAVA基础——toString()方法
toString()方法返回反映这个对象的字符串 因为toString方法是Object里面已经有了的方法,而所有类都是继承Object,所以“所有对象都有这个方法”. 它通常只是为了方便输出,比如S ...
- equals与== 和toString方法
/** * equals()方法的使用 * * 1.java.lang.Object类中的equals()方法的定义: * * public boolean equals(Object obj) { ...
随机推荐
- cf 543 D. Road Improvement
(懒得想了,,又是DP) #include<bits/stdc++.h> #define N 200005 #define LL long long #define inf 0x3f3f3 ...
- 【转】AutoMapper对象映射
什么是AutoMapper?AutoMapper是一个简单的小型库,用于解决一个看似复杂的问题 - 摆脱将一个对象映射到另一个对象的代码.这种类型的代码是相当沉闷和无聊的写,所以为什么不发明一个工具来 ...
- POJ 1770 树形DP
咋一看确实想到的是树形DP,但是我一开始也马上想到环的情况,这样应该是不可以进行树形DP的,然后我自以为是地想用有向图代替无向图,而且总是从能量高的指向能量低的,这样自以为消除了环,但是其实是不对滴, ...
- mysql 索引使用教程
1.什么索引 索引是一种特殊的文件(InnoDB数据表上的索引是表空间的一个组成部分),它们包含着对数据表里所有记录的位置信息.更通俗的说,数据库索引好比是一本书前面的目录,能加快数据库的查询速度. ...
- 【pwnable.kr】bof
pwnable从入门到放弃,第三题. Download : http://pwnable.kr/bin/bofDownload : http://pwnable.kr/bin/bof.c Runnin ...
- 【LeetCode】分发糖果
[问题]老师想给孩子们分发糖果,有 N 个孩子站成了一条直线,老师会根据每个孩子的表现,预先给他们评分. 你需要按照以下要求,帮助老师给这些孩子分发糖果: 每个孩子至少分配到 1 个糖果.相邻的孩子中 ...
- 【机器学习实战学习笔记(1-2)】k-近邻算法应用实例python代码
文章目录 1.改进约会网站匹配效果 1.1 准备数据:从文本文件中解析数据 1.2 分析数据:使用Matplotlib创建散点图 1.3 准备数据:归一化特征 1.4 测试算法:作为完整程序验证分类器 ...
- [CISCN2019 总决赛 Day1 Web4]Laravel1
0x00 知识点 这个题核心就是找POP链,看了一下网上的WP,难顶啊.. 先贴上思路和poc,之后等熟练了再来做吧 https://glotozz.github.io/2019/11/05/buuc ...
- part7 vuex实现数据共享
vuex 是数据框架(一个插件)(单项数据的改变流程,组件改数据必须先调Action用dispatch方法) 大型项目vue只能承担视图层的主要内容 大量数据传递的时候,往往需要一个数据框架辅助 例子 ...
- id就是方法名,如何调用;批量input怎么获取他们的key值作为参数
1.很多Dom的时候,一个个写会比较麻烦,我用ID记载他的方法名: 2.很多input,在数据交互的时候一个个获取会比较繁琐,给一个方法,批量获取. <div id="searchSt ...