对象未在本地创建

时间:2016-01-21 09:02:35

标签: java sonarqube pmd

我的方法中有以下代码段:

JSONParser jsonParser = new JSONParser();
try {
    Object obj = jsonParser.parse(new InputStreamReader(is));
    JSONObject jsonObj = (JSONObject) obj;
    JSONArray jsonArray = (JSONArray) jsonObj.get("JSON_NODE");
    String jsonStr = jsonArray.toJSONString();
    return (JSONObject)jsonParser.parse(jsonStr);     
}

在SonarQube中,我在

上遇到了“本地未创建对象”的问题
String jsonStr = jsonArray.toJSONString();

我想知道为什么我会这样做。有什么帮助吗?

1 个答案:

答案 0 :(得分:1)

< p>为何违规?< / p> < BLOCKQUOTE>   < p>此违规涉及在对象上调用方法的事实   这不是在方法中创建的,而是作为一个检索   返回对象作为对其中一个本地的方法调用的结果   对象< / p为H. < / BLOCKQUOTE> < p>您的< code> jsonArray< / code>对象满足上述条件。 < / p为H. < p>如何解决,< / p> < p>参见列出的一​​个样本< a href =" http://vitalflux.com/law-demeter-violations-fix/"的rel ="此处< nofollow的"&GT / A> ,您的代码可以固定在类似的行上。< / p> < p>根据Demeter法,方法< code> M< / code>对象< code> O< / code>应该只调用以下类型的方法:< / p> < pre>< code> 1.对象O本身的方法 2.对象的方法作为参数传递 3.对象的方法,它在实例变量中保存 4.Any在方法M中本地创建的对象 < /代码>< /预>