我的方法中有以下代码段:
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中本地创建的对象
< /代码>< /预>