这篇文章主要介绍了Java toString方法重写工具之ToStringBuilder案例详解,本篇文章通过简要的案例,讲解了该项技术的了解与使用,以下就是详细内容,需要的朋友可以参考下
街头流氓的通用语言3的工具包里有一个ToStringBuilder类,这样在打日志的时候可以方便的打印出类实例中的各属性的值。
具体用法如下:
导入org。阿帕奇。公地。郎3。建筑商。tostring builder
导入org。阿帕奇。公地。郎3。建筑商。tostring风格;
公共类消息{
私有字符串来自;
私有字符串到;
私有字符串体;
公共字符串getFrom() {
从.返回;
}
public void setFrom(String from) {
来自于
}
公共字符串getTo() {
返回到;
}
public void setTo(String to) {
to=to
}
公共字符串getBody() {
返回正文;
}
公共void setBody(字符串体){
this.body=body
}
@覆盖
公共字符串toString() {
返回tostring builder。reflectiontostring(this,ToStringStyle .多行样式);
}
公共静态void main(String[] args) {
Message msg=new Message();
味精。set from(' Vince ');
味精。塞托('迈克');
味精。设置正文(' hello ');
系统。出去。println(消息。tostring());
}
}
而且支持多种打印格式
多行输出的:
com。文斯。即时消息。dto。消息@ af72d 8[
来自=文斯
给=迈克
正文=你好
]
默认一行的:
文斯。即时消息。dto。message @ af72d 8[from=Vince,to=mike,body=hello]
无字段名称样式:
文斯。即时消息。dto。留言@ af72d 8【文斯,迈克,你好]
短前缀样式:
消息[发件人=文斯,收件人=迈克,正文=你好]
简单样式:
文斯,迈克,你们好
原理其实就是通过Java 语言(一种计算机语言,尤用于创建网站)语言(一种计算机语言,尤用于创建网站)的反映(反射)获取值,然后组成一个缓冲区。
里面部分源码:
/**
* pap挂起到代码到字符串/代码数据指示器的开始100元/人
* 拼装结果的
* @param缓冲区要填充的代码串缓冲区/代码
* @param对象要为其生成代码字符串/代码的代码对象/代码
*/
public void appendStart(最终字符串缓冲区buffer,最终对象object) {
如果(反对!=null) {
附录类名(缓冲区,对象);
appendIdentityHashCode(buffer,object);
appendContentStart(缓冲区);
if (fieldSeparatorAtStart) {
appendFieldSeparator(缓冲区);
}
}
}
/**
* pAppend { @ link System # identity hashcode(Java。郎。对象)} ./p
* 拼装对象哈希码
* @param缓冲区要填充的代码串缓冲区/代码
* @param对象要输出身份证明(identification)的代码对象/代码
*/
受保护的void appendIdentityHashCode(最终字符串缓冲区,最终对象对象){
if (this.isUseIdentityHashCode()对象!=null) {
注册(对象);
缓冲。追加(“@”);
缓冲。追加(整数。tohexstring(系统。identity hashcode(object)));
}
}
需要注意的是:
通过反射使用默认的ToStringStyle生成toString值。
它使用AccessibleObject.setAccessible来访问私有字段。这意味着如果在安全管理器下运行,如果权限设置不正确,它将引发安全异常。它也不如显式测试有效。
瞬态成员将不包括在内,因为它们很可能是派生的。静态字段将不包括在内。将追加超类字段。
也就是说短暂的和静电修饰的属性不能打印出来,但是父类的是可以打印出来的,使用的时候一定要注意了。
到此这篇关于Java toString方法重写工具之ToStringBuilder案例详解的文章就介绍到这了,更多相关Java toString方法重写工具之ToStringBuilder内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。