- 浏览: 86031 次
文章分类
最新评论
转自:1、http://blog.csdn.net/cuker919/article/details/6120920
2、http://rmn190.iteye.com/blog/349479
今天系统要打印日志,发现所有实体的toString()方法 都用的是简单的"+",因为每"+" 一个就会 new 一个 String 对象,
这样如果系统内存小的话会暴内存(前提系统实体比较多)。
由于打印的时候包含包名,感觉太长了,
使用ToStringStyle.SHORT_PREFIX_STYLE 截掉包名
import java.lang.reflect.Field;
import org.apache.commons.lang.builder.ReflectionToStringBuilder;
import org.apache.commons.lang.builder.ToStringBuilder;
@Override
public String toString() {
//以前的“+”写法
/*return "HolidayConfig [end_date=" + end_date + ", holiday_date="
+ holiday_date + ", holiday_id=" + holiday_id
+ ", holiday_name=" + holiday_name + ", holiday_type="
+ holiday_type + ", state=" + state + "]";*/
//现在平常实体调用的方法
return ToStringBuilder.reflectionToString(this,ToStringStyle.SHORT_PREFIX_STYLE);
//user实体不打印password机密信息使用方法
return (new ReflectionToStringBuilder(this) {
protected boolean accept(Field f) {
return super.accept(f) && !f.getName().equals("password");
}
}).toString();
}
打印样列:
com.domain.entity.parameterconfig.HolidayConfig@60aeb0[holiday_id=11,holiday_name=6666,end_date=<null>,holiday_type=1,state=<null>]
截掉包名后只剩下类名:
TariffTimeSpan[tariffTimeSpanPK=TariffTimeSpanPK[time_span_id=123456,favor_type=1,time_begin=<null>],time_span_name=<null>,time_end=<null>,discount=115,eff_time=Thu Jan 06 17:31:10 CST 2011,exp_time=Sun Jan 06 17:31:10 CST 4109,staff_id=<null>,create_time=<null>]
参考资料:
http://rmn190.javaeye.com/blog/349479
---------------------------------------------------------------------------------
ToStringBuilder用于生成对象的toString方法,在MiddleGen中比较常见。它的核心是使用ToStringStyle生成字符串。所以对其分析是建立在对ToStringStyle的分析之上的。
1.私有变量
ToStringStyle defaultStyle;缺省的Style,缺省赋值为ToStringStyle.DEFAULT_STYLE。
StringBuffer buffer;用于连接所有内容的SB。
Object object;需要输出的对象。
ToStringStyle style;所使用的Style。
2.构造函数
ToStringBuilder的构造函数必须最少包含需要输出的对象,另外也可以在构函中指定buffer和style。下面只描述全参数的处理过程:
如果style为空,则使用缺省的style。
如果buffer为空,则新生成一个大小为512的StringBuffer。
利用参数对object变量赋值。
利用style的appendStart输出开始标记。
3.append方法
append方法可以把参数中的原始类型或对象类型连接到该对象的buffer中。append方法利用了Decorator模式,所以最后都返回本对象。
3.1 单个原始类型变量和Object变量的append方法
这种方法的参数为一个原始类型变量或Object变量,但参数中可能含有FieldName,也可以没有。
boolean利用style的对应append方法进行输出,其中如果没提供FieldName,置null。
byte,char,double,float,int,long,Object同上
3.2 数组类型的append方法
这种方法的参数为一个包含原始类型变量或Object变量的数组,但参数中可能含有FieldName,也可以没有。如果含有FieldName,参数中可能含有是否输出细节的布尔变量fullDetail,也可能没有。
boolean利用style的对应append方法进行输出,其中如果没提供FieldName,置null。如果提供了FieldName,而没有提供fullDetail,则fullDetail置null。否则利用BooleanUtils的toBooleanObject把boolean变量转换为Boolean.TRUE或Boolean.FALSE。
byte,char,double,float,int,long,Object,short同上
4.reflectionToString族
这组方法使用静态方式,提供对对象字段的自动映射和输出的功能,其原理采用ReflectionToStringBuilder的对应toString方法处理。
5.toString方法
toString方法输出最后的字符串。执行以下操作:
如果object为空,则利用style的getNullText方法输出空标记。
否则利用style的appendEnd输出结束标记。
返回buffer的toString方法。
6.其它
6.1 appendAsObjectToString方法
同ToStringStyle的appendCyclicObject方法。
6.2 appendSuper方法
同ToStringStyle的同名方法。
6.3 appendToString方法
同ToStringStyle的同名方法。
2、http://rmn190.iteye.com/blog/349479
今天系统要打印日志,发现所有实体的toString()方法 都用的是简单的"+",因为每"+" 一个就会 new 一个 String 对象,
这样如果系统内存小的话会暴内存(前提系统实体比较多)。
由于打印的时候包含包名,感觉太长了,
使用ToStringStyle.SHORT_PREFIX_STYLE 截掉包名
import java.lang.reflect.Field;
import org.apache.commons.lang.builder.ReflectionToStringBuilder;
import org.apache.commons.lang.builder.ToStringBuilder;
@Override
public String toString() {
//以前的“+”写法
/*return "HolidayConfig [end_date=" + end_date + ", holiday_date="
+ holiday_date + ", holiday_id=" + holiday_id
+ ", holiday_name=" + holiday_name + ", holiday_type="
+ holiday_type + ", state=" + state + "]";*/
//现在平常实体调用的方法
return ToStringBuilder.reflectionToString(this,ToStringStyle.SHORT_PREFIX_STYLE);
//user实体不打印password机密信息使用方法
return (new ReflectionToStringBuilder(this) {
protected boolean accept(Field f) {
return super.accept(f) && !f.getName().equals("password");
}
}).toString();
}
打印样列:
com.domain.entity.parameterconfig.HolidayConfig@60aeb0[holiday_id=11,holiday_name=6666,end_date=<null>,holiday_type=1,state=<null>]
截掉包名后只剩下类名:
TariffTimeSpan[tariffTimeSpanPK=TariffTimeSpanPK[time_span_id=123456,favor_type=1,time_begin=<null>],time_span_name=<null>,time_end=<null>,discount=115,eff_time=Thu Jan 06 17:31:10 CST 2011,exp_time=Sun Jan 06 17:31:10 CST 4109,staff_id=<null>,create_time=<null>]
参考资料:
http://rmn190.javaeye.com/blog/349479
---------------------------------------------------------------------------------
ToStringBuilder用于生成对象的toString方法,在MiddleGen中比较常见。它的核心是使用ToStringStyle生成字符串。所以对其分析是建立在对ToStringStyle的分析之上的。
1.私有变量
ToStringStyle defaultStyle;缺省的Style,缺省赋值为ToStringStyle.DEFAULT_STYLE。
StringBuffer buffer;用于连接所有内容的SB。
Object object;需要输出的对象。
ToStringStyle style;所使用的Style。
2.构造函数
ToStringBuilder的构造函数必须最少包含需要输出的对象,另外也可以在构函中指定buffer和style。下面只描述全参数的处理过程:
如果style为空,则使用缺省的style。
如果buffer为空,则新生成一个大小为512的StringBuffer。
利用参数对object变量赋值。
利用style的appendStart输出开始标记。
3.append方法
append方法可以把参数中的原始类型或对象类型连接到该对象的buffer中。append方法利用了Decorator模式,所以最后都返回本对象。
3.1 单个原始类型变量和Object变量的append方法
这种方法的参数为一个原始类型变量或Object变量,但参数中可能含有FieldName,也可以没有。
boolean利用style的对应append方法进行输出,其中如果没提供FieldName,置null。
byte,char,double,float,int,long,Object同上
3.2 数组类型的append方法
这种方法的参数为一个包含原始类型变量或Object变量的数组,但参数中可能含有FieldName,也可以没有。如果含有FieldName,参数中可能含有是否输出细节的布尔变量fullDetail,也可能没有。
boolean利用style的对应append方法进行输出,其中如果没提供FieldName,置null。如果提供了FieldName,而没有提供fullDetail,则fullDetail置null。否则利用BooleanUtils的toBooleanObject把boolean变量转换为Boolean.TRUE或Boolean.FALSE。
byte,char,double,float,int,long,Object,short同上
4.reflectionToString族
这组方法使用静态方式,提供对对象字段的自动映射和输出的功能,其原理采用ReflectionToStringBuilder的对应toString方法处理。
5.toString方法
toString方法输出最后的字符串。执行以下操作:
如果object为空,则利用style的getNullText方法输出空标记。
否则利用style的appendEnd输出结束标记。
返回buffer的toString方法。
6.其它
6.1 appendAsObjectToString方法
同ToStringStyle的appendCyclicObject方法。
6.2 appendSuper方法
同ToStringStyle的同名方法。
6.3 appendToString方法
同ToStringStyle的同名方法。
发表评论
-
Java 使用 GZIP 进行压缩和解压缩
2014-01-21 13:58 553转自:http://www.oschina.net/code ... -
什么是内存泄漏
2014-01-17 23:16 425转自:http://www.importnew.com/87 ... -
Java ClassLoader深入研究
2014-01-10 18:31 478转自:http://blog.csdn.net/gtuu01 ... -
Java GC 算法总结
2014-01-10 09:37 697转:http://wenku.baidu.com/ ... -
Java Core系列之HashMap实现
2014-01-03 18:36 1004转自:http://www.blogjava.net/DLe ... -
Arrays用法整理
2013-12-06 10:21 444本文将整理java.util.Arrays工具类比较常用的方 ... -
如何同时启动多个Tomcat服务器
2013-12-03 09:37 505前些时日,出于某种需要,需要同时启动多个Tomcat服务器, ... -
Digester学习笔记
2013-11-29 18:28 679对象栈 对digester ... -
判断一个数组中是否有重复的元素
2013-11-16 12:13 858转自:http://godsmell.iteye.com/b ... -
开源工具 — Apache Commons BeanUtils
2013-10-25 17:58 606转自:http://ray-yui.iteye.com/bl ... -
瓜娃(guava)的API快速熟悉使用
2013-10-24 18:10 556转:http://www.cnblogs.com/snidge ... -
Google Guava 库用法整理
2013-10-23 14:48 512转:http://macrochen.iteye.com/bl ... -
开源工具 — Apache Commons Lang(2)
2013-10-23 13:49 703开源工具系列文章: Apache Commons ... -
开源工具 — Apache Commons Lang(1)
2013-10-23 11:24 639转自开源工具系列文章: Apache Commo ... -
8 张图助你更好地理解 Java
2013-09-23 15:35 570转自:http://www.iteye.com/news/2 ... -
生成jar文件的源码工具(jd-gui)
2013-04-17 22:27 1445转自:http://zz563143188.iteye.co ... -
JDOM学习资料
2013-03-17 19:32 627百度百科:http://baike.baidu.com/vi ... -
Java变量类型识别的3种方式
2013-03-14 16:49 782转自:http://snkcxy.iteye.com/blo ... -
Java基础 之 方法
2013-03-10 11:25 630转自:http://snkcxy.iteye.com/blo ... -
JDOM 创建 读取 修改 删除 XML文件
2013-03-08 16:11 793转自:http://takeme.iteye.com/blo ...
相关推荐
在Java编程中,`toString()`方法是一个非常关键的成员函数,它用于返回对象的字符串表示形式,通常包含类名和对象的属性值。当我们需要打印或调试对象时,`toString()`方法尤其有用。本篇文章将深入探讨几种在Java中...
Apache Commons Lang库提供了一个非常实用的工具类——ToStringBuilder,它使得对象的toString方法实现变得简洁且可定制化。下面我们将深入探讨ToStringBuilder类的使用方法和技巧。 ToStringBuilder是包`org....
Java组件开发(1)ToStringBuilder
但通常我们都需要为自定义类覆盖这个方法,提供更具语义的信息,以便更好地理解和调试代码。 1. **覆盖toString()** 当你创建一个自定义类时,如果希望打印出类实例的属性值,需要在类中重写`toString()`。通常,...
- ToStringBuilder和ToStringStyle:用于自定义对象的toString()方法输出格式。 2. Jakarta Commons Collections Commons Collections库为Java标准集合框架提供了扩展。它包含以下组件: - Bag:存储对象的集合,...
在自定义类的`toString()`方法时,可以使用`ToStringBuilder`和`ReflectionToStringBuilder`,它们接受`ToStringStyle`作为参数,生成不同风格的`toString()`输出。 使用Apache Commons Lang的工具类可以提高代码的...
`ToStringBuilder`提供了创建自定义`toString()`实现的方法,使得在调试和日志记录中更容易理解对象的状态。它可以包含对象的所有字段,使得输出的信息更详细且易于阅读。 Apache Commons Lang的这些工具类使得...
`ToStringBuilder`则帮助创建对象的toString()方法输出,使得调试和日志记录更加方便。 Lang项目中还包括一些枚举相关的工具,如`EnumUtils`,以及`SystemUtils`,它提供了关于运行环境的一些信息,如Java版本、...
- **ToStringStyle**和**StandardToStringStyle**:提供了不同的`toString`样式。 ##### 1.3. commons.lang.math包 提供了额外的数学工具方法,如数字范围检查、随机数生成等。 ##### 1.4. commons.lang.time包 ...
**ToStringBuilder** 类简化了toString方法的编写过程,可以通过添加不同的属性来构建字符串表示形式。 ##### ToStringStyle和StandardToStringStyle **ToStringStyle** 接口定义了toString方法的格式风格,而**...
- **使用`ToStringBuilder`:** Apache Commons Lang 库中的`ToStringBuilder`可以帮助构建一个良好的`toString()`方法,它提供了多种方法来生成清晰、一致的字符串表示。 #### 四、其他调试技巧 **不要过度依赖...
- ToStringBuilder:用于快速构建toString()方法逻辑。 ***mons BeanUtils库提供了操作Java Bean属性的工具方法。包括: - BeanUtils:提供基本的属性操作如拷贝属性、设置属性值等。 - PropertyUtils:提供了...
- **解决方案**:利用 Commons Lang 的 `ToStringBuilder` 类自动生成 `toString()` 方法。 - **讨论**: - `ToStringBuilder` 允许开发者指定哪些字段应该包含在最终的字符串中,并且支持自定义格式。 - 通过这种...
- `ToStringBuilder` 和 `ReflectionToStringBuilder` 帮助创建对象的自定义toString方法。 Apache Commons Lang 3.6 还包含了其他很多实用工具类和方法,它们都是为了提高Java开发的效率和代码质量。这个库已经被...
该库的主要动机是用于无法使用数据类且需要通过以下方式实现toString() / equals() / hashCode()的情况: 手工制作自己的:( 使用IDE生成的方法:( 使用Apache Common的和 可定制的toString()格式(可以复制Kotlin的...
每个主要版本都会有一些新特性和改进。例如,Java 8引入了流(Stream)和Lambda表达式等功能。 **安装Java** 安装Java通常涉及下载Java Development Kit (JDK),这是开发Java程序所必需的。安装过程会根据操作系统...
`Builder` 包中的类如 `ToStringBuilder`, `HashCodeBuilder` 提供了一种构建对象的toString()和hashCode()方法的简便方式,遵循了良好的编程实践。 9. **枚举工具** `EnumUtils` 提供了枚举相关的辅助方法,如...
最后,`ToStringBuilder`简化了`toString`方法的实现,使得对象状态的输出更加直观和易于调试。它支持添加任意数量的对象属性到构建器中,最终生成一个清晰的字符串表示形式。 综上所述,`commons-lang`库以其丰富...
这三个类都是为了方便地创建 `equals()`、`hashCode()` 和 `toString()` 方法。 - **EqualsBuilder**: 构建 `equals()` 方法。 - **HashCodeBuilder**: 构建 `hashCode()` 方法。 - **ToStringBuilder**: 构建 `...
应使用`JSONArray`构造函数或`JSONArray.fromObject()`方法,但`fromObject()`是`org.apache.commons.lang3.builder.ToStringBuilder`的方法,而不是`JSONArray`的),将列表转换为`JSONArray`,最后调用`toString()...