Apache Commons Lang之toString()实现

简介:
Apache Commons Lang为解决动态的toString()方法提供一套强有力的API。
 
一、实现策略
 
1、ReflectionToStringBuilder.toString(),通过反射方式实现。
2、new ToStringBuilder(),通过自定义显示格式方式实现,显示的式样提供了好几种。
 
二、实例
 
为了测试,创佳两个类 Foo、Bar,分别通过两种方式实现其toString方法
public  class Foo { 
         private String name; 
         private  int age; 
         private Bar bar; 

         public Foo(String name,  int age) { 
                 this.name = name; 
                 this.age = age; 
        }

         //省略getter/setter方法 

}
 
public  class Bar { 
         private String name; 

         public Bar(String name) { 
                 this.name = name; 
        }

         //省略getter/setter方法 

}
 
1、通过反射方式实现toString();
 
        @Override 
         public String toString() { 
                 return ReflectionToStringBuilder.toString( this); 
        }
 
显示效果:
lang.Foo@c2a132[name=foo,age=88,bar=lang.Bar@e102dc[name=bar]] 

Process finished with exit code 0
 
 
2、通过自定义格式方式实现
 
        @Override 
         public String toString() { 
                 return  new ToStringBuilder( this, ToStringStyle.MULTI_LINE_STYLE) 
                                .append( "name", name) 
                                .append( "age", age) 
                                .append( "bar", bar) 
                                .toString(); 
        }
上面这个是仅仅给了Foo类的toString()写法。
ToStringBuilder类有好几个静态常量,用来控制显示格式。
下面给出一个运行结果:
lang.Foo@1aaa14a[ 
    name=foo 
    age=88 
    bar=lang.Bar@1e51060[name=bar] 


Process finished with exit code 0
 
 
从中看来,toString()通过反射方式实现可以真正实现动态的。写法简单也省事,推荐!


本文转自 leizhimin 51CTO博客,原文链接:http://blog.51cto.com/lavasoft/113797,如需转载请自行联系原作者
相关文章
|
Apache
java.lang.NoClassDefFoundError: org/apache/commons/io/output/UnsynchronizedByteArrayOutputStream
java.lang.NoClassDefFoundError: org/apache/commons/io/output/UnsynchronizedByteArrayOutputStream
601 0
|
6月前
|
Java 数据库连接 Apache
深入理解Apache Commons Pool2池化技术
深入理解Apache Commons Pool2池化技术
|
7月前
|
算法 Java Apache
Apache Commons
Apache Commons是一个开源项目,提供了一系列的工具和库,用于简化Java开发中的常见任务。
69 1
|
移动开发 前端开发 Java
Spring MVC-09循序渐进之文件上传(基于Apache Commons FileUpload)
Spring MVC-09循序渐进之文件上传(基于Apache Commons FileUpload)
105 0
|
运维 Kubernetes Cloud Native
MSE 支持 Apache Shenyu 网关实现全链路灰度
我们希望可以对这些服务的新版本同时进行小流量灰度验证,这就是微服务架构中特有的全链路灰度场景,通过构建从网关到整个后端服务的环境隔离来对多个不同版本的服务进行灰度验证。
578 9
MSE 支持 Apache Shenyu 网关实现全链路灰度
|
Java 应用服务中间件 Apache
nested exception is java.lang.NoClassDefFoundError: org/apache/commons/lang/exception/NestableRuntim
nested exception is java.lang.NoClassDefFoundError: org/apache/commons/lang/exception/NestableRuntim
366 0
|
监控 Java 关系型数据库
Apache Flume-自定义 source(扩展)--功能测试实现|学习笔记
快速学习 Apache Flume-自定义 source(扩展)--功能测试实现
 Apache Flume-自定义 source(扩展)--功能测试实现|学习笔记
|
运维 Kubernetes Cloud Native
MSE支持Apache Shenyu网关实现全链路灰度
微服务引擎MSE面向业界主流开源微服务项目, 提供注册配置中心和分布式协调(原生支持Nacos/ZooKeeper/Eureka)、云原生网关(原生支持Ingress/Envoy)、微服务治理(原生支持Spring Cloud/Dubbo/Sentinel,遵循 OpenSergo 服务治理规范)能力。
MSE支持Apache Shenyu网关实现全链路灰度
|
Java Apache
java.lang.NoClassDefFoundError:org/apache/commons/logging/LogFactory
java.lang.NoClassDefFoundError:org/apache/commons/logging/LogFactory
109 0
|
存储 Java Apache
java积累——apache commons fileupload 实现文件上传
java积累——apache commons fileupload 实现文件上传
375 0

推荐镜像

更多