Java PMD规则校验

新手上路,请多包涵

1.final OuterDBLinkPara dbLinkPara = (OuterDBLinkPara)list.get(i);(OuterDBLinkPara是我自己写的一个实体类)
2.String dbip;
3.dbip = dbLinkPara.getDbIp();

PMD规则在序号为3的位置提示:
Potential violation of Law of Demeter (object not created locally)

不知道如何改正。

阅读 5.5k
1 个回答

LawOfDemeter

public class Foo {
    /**
     * This example will result in two violations.
     */
    public void example(Bar b) {
        // this method call is ok, as b is a parameter of "example"
        C c = b.getC();
        
        // this method call is a violation, as we are using c, which we got from B.
        // We should ask b directly instead, e.g. "b.doItOnC();"
        c.doIt();
        
        // this is also a violation, just expressed differently as a method chain without temporary variables.
        b.getC().doIt();
        
        // a constructor call, not a method call.
        D d = new D();
        // this method call is ok, because we have create the new instance of D locally.
        d.doSomethingElse(); 
    }
}

你的list是一个参数吧,LawOfDemeter规则是期望你的参数提供方法直接调用,而不使用方法返回的对象(这个对象不是在方法内部创建的),再调用对象的函数,可以参考一下上面的示例修改。
如果无法修改那就把这个规则排除掉吧。这个规则有点苛刻。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题