首页 > 学院 > 开发设计 > 正文

ToStringBuilder(二):两种方法比较

2019-11-11 05:10:59
字体:
来源:转载
供稿:网友

用反射方法的优点:

代码简洁,不需要有什么配置Model属性有变化时不必再手动更改toString方法

缺点:

有些属性并不想让输出来(可能没用,也可能出于安全方面考虑),但是反射时所有的属性值都给输出来

安全方面的考虑. 一般来说,一个java类是的属性都是PRivate的,这样用反射来构建toString方法时,就得绕过private的限制. 于是 If your system is running under a restrictive SecurityManager , you may need to alter your configuration to allow Commons Lang to bypass these security restrictions.

弥补用反射方法不够灵活的一个扩展. 由假设一个类里有名为passWord这样的属性,一般情况下,是不想让toString输入的, 但用反射默认情况下是会输出的. 这怎么办呢?看ReflectionToStringBuilder源码里文档时,发现这么一个扩展: 通过子类,覆盖其accept方法来加以筛选.具体如下所示:

public String toString() { return (new ReflectionToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE) {// 注意这里为了表达上的简洁用了匿名内部类. protected boolean accept(Field f) { return super.accept(f) && !f.getName().equals("password"); } }).toString();}

这样在toString时, 就会跳过名为password的属性.


发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表