- 浏览: 215746 次
- 性别:
- 来自: 辽宁
最新评论
-
bill200711022:
实测结果:就算把父类声明放在子类声明之后,也不会报错“Stri ...
PHP Strict Standards问题 -
congjl2002:
niuzk 写道我在office 2003下运行楼主的Exce ...
Java程序员的第一个VBA程序 -
Liv:
[i][/i]引用[img][/img][ ...
MyEclipse下部署Roller4.0 -
hyt5926:
神解决!!谢了.
Apache的443端口被占用解决方法 -
congjl2002:
ligongxiang 写道请问在JDK1.5上使用class ...
Oracle 10.2.0 最新的JDBC驱动ojdbc14.jar
请您先登录,才能继续操作
ToStringStyle对象代表的是一种输出的模式,它一般和ToStringBuilder结合使用,直接调用的机会不多,但是通过阅读它的代码,可以了解ToStringBuilder是如何进行对象的格式化输出的。
1.私有变量
boolean useFieldNames = true;是否使用字段名称
boolean useClassName = true;是否使用全路径类名
boolean useShortClassName = false;是否使用短类名
boolean useIdentityHashCode = true;是否使用惟一的哈希号
String contentStart = "[";String的开始标记
String contentEnd = "]";String的结束标记
boolean fieldSeparatorAtStart = false;是否在每个字段前加一个分隔符
boolean fieldSeparatorAtEnd = false;是否在每个字段后加一个分隔符
String fieldSeparator = ",";字段分隔符
String arrayStart = "{";数组开始标记
String arraySeparator = ",";数组成员分隔符
boolean arrayContentDetail = true;是否输出数组的细节
String arrayEnd = "}";数组结束标记
boolean defaultFullDetail = true;
String sizeStartText = "<size=";summary中描述对象size的开始标记
String sizeEndText = ">";ummary中描述对象size的结束标记
String summaryObjectStartText = "<";summary中描述对象本身的开始标记
String summaryObjectEndText = ">";summary中描述对象本身的结束标记
2.派生类
该对象有几种对象继承自该对象,派生类通过设置超类的一些私有属性(在构造函数中设置),达到输出的不同效果,有以下几种派生类:
2.1 DefaultToStringStyle和超类一致,没有任何限制。
显示效果:
commons.lang.simples.Person@182f0db[name=John Doe,age=33,smoker=false]
2.2 NoFieldNameToStringStyle限制输出字段的名称,而只有值。
显示效果:
commons.lang.simples.Person@182f0db[John Doe,33,false]
原理:
this.setUseFieldNames(false);
2.3 ShortPrefixToStringStyle限制类名和哈希号的输出。
显示效果:
Person[name=John Doe,age=33,smoker=false]
原理:
this.setUseShortClassName(true);
this.setUseIdentityHashCode(false);
2.4 SimpleToStringStyle仅输出字段内容,其它一律省略。
显示效果:
John Doe,33,false
原理:
this.setUseClassName(false);
this.setUseIdentityHashCode(false);
this.setUseFieldNames(false);
this.setContentStart("");
this.setContentEnd("");
2.5 MultiLineToStringStyle把每个字段单独占一行。
显示效果:
commons.lang.simples.Person@182f0db[
name=John Doe
age=33
smoker=false
]
原理:
this.setContentStart("[");
this.setFieldSeparator(SystemUtils.LINE_SEPARATOR + " ");
this.setFieldSeparatorAtStart(true);
this.setContentEnd(SystemUtils.LINE_SEPARATOR + "]");
这几个类都以private static final class的形式出现,并作为ToStringStyle的内部类。该对象本身也声明了对应以上类的公共静态final对象(public static final ToStringStyle),如下所示。这样就可以方便的得到这几个派生类。
DefaultToStringStyle DEFAULT_STYLE
MultiLineToStringStyle MULTI_LINE_STYLE
NoFieldNameToStringStyle NO_FIELD_NAMES_STYLE
ShortPrefixToStringStyle SHORT_PREFIX_STYLE
SimpleToStringStyle SIMPLE_STYLE
3.输出开始和结束标记
ToStringStyle利用一组*Start和*End的一组方法,输出对象/对象内容/对象字段的开始和结束标记,这些方法第一个参数均为Buffer,即实际写入的StringBuffer对象。具体描述如下所示:
3.1 appendStart和appendEnd
appendStart输出一个对象时首先输出的部分。该对象作为参数传入。当对象不为空时,完成以下工作:
利用appendClassName方法输出类名。
利用appendIdentityHashCode方法输出该类的哈希号。
利用appendContentStart方法输出内容开始的标记。
如果需要“在开始加入字段分隔符”,则利用appendFieldSeparator方法加入字段分隔符。
appendEnd 输出一个对象时最后输出的部分。该对象作为参数传入。但没有实际业务用处(仅用于unregister)。
如果不需要“在结束处加入字段分隔符”,则利用removeLastFieldSeparator方法去掉最后一个字段分隔符。
利用appendContentEnd方法输出内容结束的标记。
3.2 appendContentStart和appendContentEnd
appendContentStart输出表示内容开始的标记,缺省为“[”。
appendContentEnd输出表示内容结束的标记,缺省为“]”。
3.3 appendFieldStart和appendFieldEnd
appendFieldStart 输出形如“fieldName=”的格式,其中=可以替换为别的内容。fieldName作为参数传入。
appendFieldEnd 输出字段分隔符,缺省为“,”。fieldName作为参数传入,但没有使用。
4.append方法
ToStringStyle提供了各种append方法,涵盖了单个对象,原始类型和数组三种形式。append方法的通用模式是把一个对象(变量为value,类型如前所述三种形式),作为一个字段(变量为fieldName)用StringBuffer对象(变量为buffer)进行输出。
4.1 对单个对象的append方法
4.1.1 该方法除了以上参数外,还利用fullDetail决定是否输出对象的细节。执行以下操作:
利用appendFieldStart方法输出该字段的开始标记。
如果对象为空,则利用appendNullText方法输出“数据为空”的标记,缺省为“<null>”。
如果对象不为空,则利用appendInternal方法输出对象的内容,利用fullDetail控制输出detail或仅是summary。
利用appendFieldEnd方法输出该字段的结束标记。
4.1.2 appendInternal方法实际输出对象的信息,detail或summary。参数同append方法。执行以下操作:
如果value已经注册(实际上表示已经完整输出过一次)或者不是原始类型包裹类,则利用ObjectUtils的identityToString方法输出对象标示(形如java.lang.String@1e23的格式,其中1e23为十六进制的哈希号)。方法结束。
否则,注册对象,根据value的类型(普通的集合类型和明确的数组使用instanceof关键字判断,Object类型使用 value.getClass().isArray()判断)利用appendDetail和appendSummary族(其中Collection和 Map使用appendSummarySize仅输出集合大小)的对应方法决定如何输出detail或summary。
注销对象。方法结束。
4.1.3 集合类型的appendDetail族,参数为buffer,fieldName和对应类型的value(集合类型或数组)
Collection:直接使用buffer.append。
Map:直接使用buffer.append。
Object:直接使用buffer.append。
long[]执行以下操作:
使用buffer.append写入arrayStart,缺省为“{”。
遍历数组,从第二个开始,首先输出数组分隔符(缺省为“,”),然后使用原始类型的appendDetail族输出。
使用buffer.append写入arrayEnd,缺省为“}”。
int[],short[],byte[],char[],double[],float[],boolean[]同上
Object[]执行以下操作:
使用buffer.append写入arrayStart,缺省为“{”。
遍历数组
从第二个开始,首先输出数组分隔符(缺省为“,”)。
如果对象为空,则利用appendNullText方法输出“数据为空”的标记。
如果对象不为空,则利用appendInternal方法输出对象的内容,利用fullDetail控制输出detail或仅是summary。(实际上递归)
使用buffer.append写入arrayEnd,缺省为“}”。
4.1.4 appendSummary族,参数为buffer,fieldName和对应类型的Value(数组,不包含Object类型),但fieldName无用
Object[]: 利用appendSummarySize输出数组的大小。
long[],int[],short[],byte[],char[],double[],float[],boolean[]同上
4.1.5 appendSummarySize,参数为buffer,fieldName和大小(变量为size),执行以下操作
输出“描述大小”的文本的起始符,缺省值为“<size=”。
输出大小。
输出“描述大小”的文本的结束符,缺省值为“>”。
4.1.6 appendSummary,参数为buffer,fieldName和类型为Object的Value,执行以下操作
输出“描述对象概况”的文本的起始符,缺省值为“<”。
输出通过getShortClassName获得的该对象的短类型描述符。
输出“描述对象概况”的文本的结束符,缺省值为“>”。
4.2 对原始类型的append方法
4.2.1 append方法把一个原始类型(value),作为一个字段(fieldName)进行输出。
long执行以下操作:
利用appendFieldStart方法输出该字段的开始标记。
利用原始类型的appendDetail族数据value的内容。
利用appendFieldEnd方法输出该字段的结束标记。
int,short,byte,char,double,float,boolean同上
4.2.2 原始类型的appendDetail族,参数为buffer,fieldName和对应原始类型的value
long直接使用buffer.append。
int,short,byte,char,double,float,boolean同上
4.3 对数组类型的append方法
append方法把一个数组类型(array),作为一个字段(fieldName)进行输出,利用fullDetail决定是否输出对象的细节。
Object[]执行以下操作:
利用appendFieldStart方法输出该字段的开始标记。
如果array为空,则利用appendNullText方法输出“数据为空”的标记。
如果不为空且要求输出细节,则利用集合类型的appendDetail数据数组。
否则,则利用appendSummary输出Summary。
利用appendFieldEnd方法输出该字段的结束标记。
long[],int[],short[],byte[],char[],double[],float[],boolean[]
5 其他一些公共和私有类
5.1 appendSupper方法输出超类的内容,实际上就是调用appendToString输出文本。
5.2 appendToString方法输出一个使用了相同Style输出的文本(toString)。执行以下操作(字符串不为空):
找到toString的内容(在contentStart和contentEnd中间的内容)。
如果存在,则取出该部分。如果在内容的开头有字段分隔符,则利用removeLastFieldSeparator方法去掉最后一个字段分隔符。这里注意只有在toString变量和当前使用相同的Style才可以。然后输出取出的部分,并利用appendFieldSeparator方法输出字段分隔符。
5.3 removeLastFieldSeparator方法是一个Protected方法,用于删除最后一个字段分隔符。算法是主字符串长度设为len,字段分隔符长度设为sepLen。定义变量match为true,在住字符串中从后向前遍历,如果主字符串的最后sepLen个字符和字段分隔符相同,则把主字符串长度设为len减去sepLen,由于主字符串以StringBuffer形式存在。如果在遍历过程中,发现某个字符不符,说明主字符串最后的部分不是一个字段分隔符,则什么都不做。
5.4 appendClassName方法输出对象(object)的类名,执行如下操作:
如果允许使用类名(useClassName布尔值),且object不为空,则
注册object
如果使用短类名,则使用getShortClassName方法获得结果并输出。
否则,使用object.getClass().getName()获得全路径类名,并输出。
5.5 appendIdentityHashCode方法输出对象(object)的哈希号,执行如下操作:
如果允许使用哈希号,且object不为空,则
注册object
输出“@”
利用System.identityHashCode获取哈希号,并转换为十六进制输出。
5.6 reflectionAppendArrayDetail方法输出类型为Object的数组(object),处理与object[]的appendDetail方法类似。
1.私有变量
boolean useFieldNames = true;是否使用字段名称
boolean useClassName = true;是否使用全路径类名
boolean useShortClassName = false;是否使用短类名
boolean useIdentityHashCode = true;是否使用惟一的哈希号
String contentStart = "[";String的开始标记
String contentEnd = "]";String的结束标记
boolean fieldSeparatorAtStart = false;是否在每个字段前加一个分隔符
boolean fieldSeparatorAtEnd = false;是否在每个字段后加一个分隔符
String fieldSeparator = ",";字段分隔符
String arrayStart = "{";数组开始标记
String arraySeparator = ",";数组成员分隔符
boolean arrayContentDetail = true;是否输出数组的细节
String arrayEnd = "}";数组结束标记
boolean defaultFullDetail = true;
String sizeStartText = "<size=";summary中描述对象size的开始标记
String sizeEndText = ">";ummary中描述对象size的结束标记
String summaryObjectStartText = "<";summary中描述对象本身的开始标记
String summaryObjectEndText = ">";summary中描述对象本身的结束标记
2.派生类
该对象有几种对象继承自该对象,派生类通过设置超类的一些私有属性(在构造函数中设置),达到输出的不同效果,有以下几种派生类:
2.1 DefaultToStringStyle和超类一致,没有任何限制。
显示效果:
commons.lang.simples.Person@182f0db[name=John Doe,age=33,smoker=false]
2.2 NoFieldNameToStringStyle限制输出字段的名称,而只有值。
显示效果:
commons.lang.simples.Person@182f0db[John Doe,33,false]
原理:
this.setUseFieldNames(false);
2.3 ShortPrefixToStringStyle限制类名和哈希号的输出。
显示效果:
Person[name=John Doe,age=33,smoker=false]
原理:
this.setUseShortClassName(true);
this.setUseIdentityHashCode(false);
2.4 SimpleToStringStyle仅输出字段内容,其它一律省略。
显示效果:
John Doe,33,false
原理:
this.setUseClassName(false);
this.setUseIdentityHashCode(false);
this.setUseFieldNames(false);
this.setContentStart("");
this.setContentEnd("");
2.5 MultiLineToStringStyle把每个字段单独占一行。
显示效果:
commons.lang.simples.Person@182f0db[
name=John Doe
age=33
smoker=false
]
原理:
this.setContentStart("[");
this.setFieldSeparator(SystemUtils.LINE_SEPARATOR + " ");
this.setFieldSeparatorAtStart(true);
this.setContentEnd(SystemUtils.LINE_SEPARATOR + "]");
这几个类都以private static final class的形式出现,并作为ToStringStyle的内部类。该对象本身也声明了对应以上类的公共静态final对象(public static final ToStringStyle),如下所示。这样就可以方便的得到这几个派生类。
DefaultToStringStyle DEFAULT_STYLE
MultiLineToStringStyle MULTI_LINE_STYLE
NoFieldNameToStringStyle NO_FIELD_NAMES_STYLE
ShortPrefixToStringStyle SHORT_PREFIX_STYLE
SimpleToStringStyle SIMPLE_STYLE
3.输出开始和结束标记
ToStringStyle利用一组*Start和*End的一组方法,输出对象/对象内容/对象字段的开始和结束标记,这些方法第一个参数均为Buffer,即实际写入的StringBuffer对象。具体描述如下所示:
3.1 appendStart和appendEnd
appendStart输出一个对象时首先输出的部分。该对象作为参数传入。当对象不为空时,完成以下工作:
利用appendClassName方法输出类名。
利用appendIdentityHashCode方法输出该类的哈希号。
利用appendContentStart方法输出内容开始的标记。
如果需要“在开始加入字段分隔符”,则利用appendFieldSeparator方法加入字段分隔符。
appendEnd 输出一个对象时最后输出的部分。该对象作为参数传入。但没有实际业务用处(仅用于unregister)。
如果不需要“在结束处加入字段分隔符”,则利用removeLastFieldSeparator方法去掉最后一个字段分隔符。
利用appendContentEnd方法输出内容结束的标记。
3.2 appendContentStart和appendContentEnd
appendContentStart输出表示内容开始的标记,缺省为“[”。
appendContentEnd输出表示内容结束的标记,缺省为“]”。
3.3 appendFieldStart和appendFieldEnd
appendFieldStart 输出形如“fieldName=”的格式,其中=可以替换为别的内容。fieldName作为参数传入。
appendFieldEnd 输出字段分隔符,缺省为“,”。fieldName作为参数传入,但没有使用。
4.append方法
ToStringStyle提供了各种append方法,涵盖了单个对象,原始类型和数组三种形式。append方法的通用模式是把一个对象(变量为value,类型如前所述三种形式),作为一个字段(变量为fieldName)用StringBuffer对象(变量为buffer)进行输出。
4.1 对单个对象的append方法
4.1.1 该方法除了以上参数外,还利用fullDetail决定是否输出对象的细节。执行以下操作:
利用appendFieldStart方法输出该字段的开始标记。
如果对象为空,则利用appendNullText方法输出“数据为空”的标记,缺省为“<null>”。
如果对象不为空,则利用appendInternal方法输出对象的内容,利用fullDetail控制输出detail或仅是summary。
利用appendFieldEnd方法输出该字段的结束标记。
4.1.2 appendInternal方法实际输出对象的信息,detail或summary。参数同append方法。执行以下操作:
如果value已经注册(实际上表示已经完整输出过一次)或者不是原始类型包裹类,则利用ObjectUtils的identityToString方法输出对象标示(形如java.lang.String@1e23的格式,其中1e23为十六进制的哈希号)。方法结束。
否则,注册对象,根据value的类型(普通的集合类型和明确的数组使用instanceof关键字判断,Object类型使用 value.getClass().isArray()判断)利用appendDetail和appendSummary族(其中Collection和 Map使用appendSummarySize仅输出集合大小)的对应方法决定如何输出detail或summary。
注销对象。方法结束。
4.1.3 集合类型的appendDetail族,参数为buffer,fieldName和对应类型的value(集合类型或数组)
Collection:直接使用buffer.append。
Map:直接使用buffer.append。
Object:直接使用buffer.append。
long[]执行以下操作:
使用buffer.append写入arrayStart,缺省为“{”。
遍历数组,从第二个开始,首先输出数组分隔符(缺省为“,”),然后使用原始类型的appendDetail族输出。
使用buffer.append写入arrayEnd,缺省为“}”。
int[],short[],byte[],char[],double[],float[],boolean[]同上
Object[]执行以下操作:
使用buffer.append写入arrayStart,缺省为“{”。
遍历数组
从第二个开始,首先输出数组分隔符(缺省为“,”)。
如果对象为空,则利用appendNullText方法输出“数据为空”的标记。
如果对象不为空,则利用appendInternal方法输出对象的内容,利用fullDetail控制输出detail或仅是summary。(实际上递归)
使用buffer.append写入arrayEnd,缺省为“}”。
4.1.4 appendSummary族,参数为buffer,fieldName和对应类型的Value(数组,不包含Object类型),但fieldName无用
Object[]: 利用appendSummarySize输出数组的大小。
long[],int[],short[],byte[],char[],double[],float[],boolean[]同上
4.1.5 appendSummarySize,参数为buffer,fieldName和大小(变量为size),执行以下操作
输出“描述大小”的文本的起始符,缺省值为“<size=”。
输出大小。
输出“描述大小”的文本的结束符,缺省值为“>”。
4.1.6 appendSummary,参数为buffer,fieldName和类型为Object的Value,执行以下操作
输出“描述对象概况”的文本的起始符,缺省值为“<”。
输出通过getShortClassName获得的该对象的短类型描述符。
输出“描述对象概况”的文本的结束符,缺省值为“>”。
4.2 对原始类型的append方法
4.2.1 append方法把一个原始类型(value),作为一个字段(fieldName)进行输出。
long执行以下操作:
利用appendFieldStart方法输出该字段的开始标记。
利用原始类型的appendDetail族数据value的内容。
利用appendFieldEnd方法输出该字段的结束标记。
int,short,byte,char,double,float,boolean同上
4.2.2 原始类型的appendDetail族,参数为buffer,fieldName和对应原始类型的value
long直接使用buffer.append。
int,short,byte,char,double,float,boolean同上
4.3 对数组类型的append方法
append方法把一个数组类型(array),作为一个字段(fieldName)进行输出,利用fullDetail决定是否输出对象的细节。
Object[]执行以下操作:
利用appendFieldStart方法输出该字段的开始标记。
如果array为空,则利用appendNullText方法输出“数据为空”的标记。
如果不为空且要求输出细节,则利用集合类型的appendDetail数据数组。
否则,则利用appendSummary输出Summary。
利用appendFieldEnd方法输出该字段的结束标记。
long[],int[],short[],byte[],char[],double[],float[],boolean[]
5 其他一些公共和私有类
5.1 appendSupper方法输出超类的内容,实际上就是调用appendToString输出文本。
5.2 appendToString方法输出一个使用了相同Style输出的文本(toString)。执行以下操作(字符串不为空):
找到toString的内容(在contentStart和contentEnd中间的内容)。
如果存在,则取出该部分。如果在内容的开头有字段分隔符,则利用removeLastFieldSeparator方法去掉最后一个字段分隔符。这里注意只有在toString变量和当前使用相同的Style才可以。然后输出取出的部分,并利用appendFieldSeparator方法输出字段分隔符。
5.3 removeLastFieldSeparator方法是一个Protected方法,用于删除最后一个字段分隔符。算法是主字符串长度设为len,字段分隔符长度设为sepLen。定义变量match为true,在住字符串中从后向前遍历,如果主字符串的最后sepLen个字符和字段分隔符相同,则把主字符串长度设为len减去sepLen,由于主字符串以StringBuffer形式存在。如果在遍历过程中,发现某个字符不符,说明主字符串最后的部分不是一个字段分隔符,则什么都不做。
5.4 appendClassName方法输出对象(object)的类名,执行如下操作:
如果允许使用类名(useClassName布尔值),且object不为空,则
注册object
如果使用短类名,则使用getShortClassName方法获得结果并输出。
否则,使用object.getClass().getName()获得全路径类名,并输出。
5.5 appendIdentityHashCode方法输出对象(object)的哈希号,执行如下操作:
如果允许使用哈希号,且object不为空,则
注册object
输出“@”
利用System.identityHashCode获取哈希号,并转换为十六进制输出。
5.6 reflectionAppendArrayDetail方法输出类型为Object的数组(object),处理与object[]的appendDetail方法类似。
发表评论
-
将oracle用户密码设置为永不过期
2016-02-28 20:40 944修改oracle用户密码永不过期。为了测试 ... -
SQL Server 因为正在使用 无法还原解决方法
2016-02-26 12:00 868有时候我们需要还原数据库,但是由于程序或者其他人正在操作数据 ... -
SQL Server Management Studio连接服务器时指定端口号
2016-02-25 15:40 1233今天想连接SQL Server服务器,需要指定端口号。 各 ... -
Fixing SVN Edge Database after failed upgrade to 5.x
2015-08-08 22:55 2407问题:Cannot login to console aft ... -
Oracle管理员代理普通用户操作
2014-10-15 16:11 843-- 1. 以DBA身份连接至数据库,创建一个代 ... -
Linux tar压缩时排除某个目录或文件的参数
2012-05-03 08:58 1288在对某个目录进行压缩的时候,有时候想排除掉某个目录,例如: ... -
ubuntu 11.10 安装 java环境
2012-04-07 15:07 1042声明:一下内容主要来自网络,本来在此基础上根据自己的成功经验做 ... -
Xml转CSV的小工具
2012-02-09 17:59 2953这个挺好用,而且不需要预定义模板 -
Oracle好文章
2012-02-09 16:18 769Oracle IO http://blog.163.com/ ... -
c# sqlite好文章
2011-11-15 23:28 811http://www.dreamincode.net/foru ... -
eclipse或者myeclipse的Help菜单下找不到SoftWare Updates菜单的解决
2011-10-25 13:34 1708In some situations you may not ... -
VirtualBox问题汇总
2011-10-25 10:12 8171.windows共享文件夹 映射网络驱动\\vboxsvr ... -
Word页眉插入章节名
2011-09-20 10:29 1673一篇长的Word文档中保存了多篇文章,通过域功能,可以把文章的 ... -
Access restriction: The type FtpClient is not accessible due to restriction on r
2011-06-27 15:31 2797在做ftp,代码中引用import sun.net.ftp.F ... -
iTunes备份目录
2011-06-16 23:26 1439iTunes 将备份文件存放在以下位置:Windows XP: ... -
bash中获得文件名和文件路径
2011-06-10 17:15 920[root@mail /]# dirname /root/ ... -
VirtualBox3.2.12在CentOS中共享Windows文件夹
2011-05-01 23:04 3979http://www.51testing.com/?uid-1 ... -
java中判断字符串是否为数字的三种方法
2010-09-27 11:06 10781用JAVA自带的函数public static ... -
win7右键新建为空解决办法
2010-06-27 20:53 3658环境:win7 Ultimate 问题:右键的新建菜单为空 ... -
gbk, gb2312,big5,unicode,utf-8,utf-16的区别
2010-05-05 23:52 1357以前收藏的一篇 标题 谈谈Unicode编码,简要解释UCS、 ...
相关推荐
commons-lang3.3.1.jar、Apache Commons包中的一个,包含了一些数据类型工具类,是java.lang.*的扩展。必须使用的jar包。为JRE5.0+的更好的版本所提供 Jar文件包含的类: META-INF/MANIFEST.MFMETA-INF/LICENSE....
commons-lang3.3.1.jar、Apache Commons包中的一个,包含了一些数据类型工具类,是java.lang.*的扩展。必须使用的jar包。为JRE5.0+的更好的版本所提供 Jar文件包含的类: META-INF/MANIFEST.MFMETA-INF/LICENSE....
org.apache.commons.lang.builder.ToStringStyle$NoFieldNameToStringStyle.class org.apache.commons.lang.builder.ToStringStyle$ShortPrefixToStringStyle.class org.apache.commons.lang.builder.ToStringStyle$...
本文将详细介绍几个常用的Apache Commons组件:commons-lang、commons-beanutils和commons-collections。 #### 1. Commons Lang Commons Lang库提供了对Java语言及其标准库的扩展,主要聚焦于字符串处理、对象操作...
使用Apache Commons Lang的工具类可以提高代码的可读性、减少重复代码,并且使代码更健壮。无论是处理null值、比较对象还是生成易读的`toString()`输出,这些工具类都大大提高了开发效率。因此,了解并熟练使用`...
Jakarta Commons是一系列开源Java组件的集合,最初由Apache Software Foundation维护,并从 Jakarta EE (以前称为 J2EE) 分离出来。Jakarta Commons涉及多个领域,包括字符串处理、验证、Bean操作、集合类等,其设计...
为了解决这个问题,Apache Commons Lang库提供了一个实用工具类`ToStringBuilder`。它简化了`toString()`的构建过程,允许我们以更简洁的方式构造字符串。使用`ToStringBuilder`的例子如下: ```java public String...
Jakarta Commons是一系列独立可重用的Java组件,由Apache软件基金会维护。这些组件旨在简化Java应用程序的开发,提供一系列实用工具类,帮助开发者解决常见的编程问题,提高代码质量和开发效率。 #### Commons Lang...
Apache Commons Lang库提供了一个非常实用的工具类——ToStringBuilder,它使得对象的toString方法实现变得简洁且可定制化。下面我们将深入探讨ToStringBuilder类的使用方法和技巧。 ToStringBuilder是包`org....
import org.apache.commons.lang3.builder.ToStringStyle; public class User1 implements Serializable { private String name; private int age; public String getName() { return name; } public void set...