我曾在一些基于Spring Framework的Web项目中工作过,我总是发现同样的PMD / Checkstyle问题导致复杂程度:(。这里有一个简单的例子:
我们定义父类。
public Class ObjectA(){
private ObjectB objectB;
public ObjectB getObjectB(){
return objectB;
}
}
其次我们定义了子类。
public Class ObjectB(){
private String str;
public String getStr(){
return str;
}
}
现在我从ObjectA获取String“str”的值,只有当它不为空时,我必须检查所有对象是否为空。
第一个解决方案(4个条件)
if(objectA != null
&& objectA.getObjectB() != null
&& objectA.getObjectB().getStr() != null
&& !objectA.getObjectB().getStr().isEmpty()){
// Do something...
}
使用Spring的StringUtils的第二个解决方案(3个条件)
if(objectA != null
&& objectA.getObjectB() != null
&& StringUtils.hasText(objectA.getObjectB().getStr())){
// Do something...
}
我想知道在Spring中是否存在一些方法来检查ObjectA中的ObjectB是否为null,并且该方法必须检查ObjectA是否也为null。
感谢!!!
答案 0 :(得分:2)
所有关于封装基本上是链接getter是一种反模式(imho)。
您应该在ObjectA
中封装部分内容,您应该提供getstr
方法并删除getObjectB()
方法。
public class ObjectA {
private ObjectB objectB;
public String getstr() {
return objectB != null ? objectB.getstr() : null;
}
}
现在你的其他代码就是。
if (objectA != null && StringUtils.hasText(objectA.getstr()) { ... }
答案 1 :(得分:0)