声纳正在给我违反“奇异场”的规则。
我只有一个像这样的方法上课。
public class MyClass{
MyType object;
public void myMethod(){
object= aMethod(arg); //Returns instance for the class MyType
}
}
这里 myMethod 被无数次调用。
我是否为 MyType 节省了对象创建的费用?
Sonar告诉我在 myMethod ()中声明 MyType 。 这会导致对象创建的成本吗?
请解释....
答案 0 :(得分:6)
在您的实际代码中,完全没有必要将object
声明为字段。
实际上,它甚至不需要被另一个对象部分访问,因此它的状态没有理由在程序工作流程中被保存(浪费一点点内存......)。
垃圾收集器可以在myMethod()
完成后立即收集您的本地变量。
Sonar希望您声明如下:
public class MyClass{
public void myMethod(){
MyType object = aMethod(arg); //local variable instead of field ;)
}
}