如果这个问题很愚蠢,请原谅我。。。我是编程方面的新手。我感到困惑的一件事是,每当我调用获取某个值的方法或保留本地副本并更新该方法时,是否应该实例化一个新变量。
为了说明,假设我有一个在迷宫中导航的机器人。机器人驾驶员操作机器人,必须获取机器人的坐标才能执行某些动作,例如感应障碍物。
public class RoboDriver {
public void senseObstacle() {
int[] position = robot.getPosition();
...
}
}
public class RoboDriver {
int[] robotPositionCopy;
public void senseObstacle() {
this.robotPositionCopy = robot.getPosition();
...
}
}
位置坐标在机器人对象中始终是最新的。因此,如果我想获得最新职位,这两个示例中哪个更好,为什么?还是没有太大的不同?
最佳答案
一个人没有实例化一个局部变量,您的说法使我认为您可能正在考虑这样做是有代价的。局部变量是绝对免费的:它们只是为存储位置指定的名称,它们将始终存在于方法的堆栈框架中。
与此相反,您的第二个示例声明了一个实例变量,并且确实要付出一定的代价:类的每个实例都必须为其在堆上保留内存,即使您仅在执行方法时使用它。
因此,我认为建议是一致的:不要声明实例变量,除非您需要它们保存长期存在的对象状态。
关于java - 调用访问器方法的良好做法?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/26284475/