ReflectionToStringBuilder的使用分析与优化
来源:互联网 发布:重庆seo博客 编辑:程序博客网 时间:2024/06/08 04:40
前因:Object 类 手写toString 方法 太繁琐, 修改太麻烦
后果:利用 Apache Commons lang 自动化实现 toString
优势:①代码简洁 , 无须任何配置
② Model 属性变化 , 无需修改 toString
缺陷:安全性问题 , 反射私有属性值也会暴露 .
改进:利用ToStringBuilder弥补(通过 ReflectionToStringBuilder 子类 , 覆盖其 accept 方法来加以筛选 )
示例代码如下:
public String toString() {
return (new ReflectionToStringBuilder(this) {
protected boolean accept(Field f) {
return super.accept(f) && !f.getName().equals(“password”);
}
}).toString();
}
代码解释: toString 方法会跳过名为 password 属性
ToStringStyle 抽象类与设计模式
ToStringBuilder 封装 的三个属性 :
/**
* Current toString buffer, not null.
*/
private final StringBuffer buffer;//封装最终结果
/**
* The object being output, may be null.
*/
private final Object object;//toString 对象
/**
* The style of output to use, not null.
*/
private final ToStringStyle style;
关于类型ToStringStyle 在 ToStringBuilder 源码中的利用 ,
ToStringBuilder 类中所有的方法 append 都是通过调用属性 style 相应方法实现 .
ToStringStyle 设计模式 : 单例模式的衍生,返回子类对象
本文小结 :
①ToStringBuilder分而治之, 通过属性 ToStringBuilder 来分离功能的调用与实现 . ②子类达到多态的单例少见, 通过子类 StandardToStringStyle 提供了一个更为灵活的扩展 .
③具体实现大家可以参考 ReflectionToStringBuilder 源码 .
- ReflectionToStringBuilder的使用分析与优化
- ReflectionToStringBuilder的使用分析与优化
- ReflectionToStringBuilder对toString的支持
- Lucene的使用与优化
- BaseAdapter的使用与优化
- BaseAdapter的使用与优化
- BaseAdapter的使用与优化
- WebView的使用与优化
- BaseAdapter的使用与优化
- BaseAdapter的使用与优化
- ListView的使用与优化
- 表连接方式的分析与优化
- x264的耗时分析与优化策略
- 分析优化与竞价之间的不同
- 快速排序的分析与优化
- linux服务器的性能分析与优化
- linux服务器的性能分析与优化
- linux服务器的性能分析与优化
- mysql误删root用户或者忘记root密码解决方法
- [c++]no matching function for call to ‘sort(…)......
- 定时开关机的八种方法
- 分布式系统的事务处理
- 关于ANR的官方建议
- ReflectionToStringBuilder的使用分析与优化
- 百度地图3.1.1开发简略之地图闪烁图标
- 放大 缩小
- phpstorm多项目共存
- vector的erase用法--学习笔记
- TRACE的用途及用法
- MFC打印图片
- Jquery Table 的基本操作
- ubuntu14.04挂载windows分区