Hello StackOverflow社区!我希望你过得愉快。
我问自己是否可以减少从另一个类的getXYZ()方法获得的int(int也应该在另一个类中修改)或者我是否必须使用setter?
例如:
课程:怪物
public int getHealth() {
return health;
}
班级:子弹
applyDamage(target);
private void applyDamage(Monster target) {
target.getHealth() - 1; // OR
target.setHealth(4);
}
答案 0 :(得分:2)
如果你的意思是:
int value = object.getXYZ();
value--;
代码有效,但不会在另一个类中设置int
。它只会减少用于存储值的局部变量的值。
object.setXYZ(object.getXYZ() - 1);
您正在寻找什么。
此答案假定您要在其他类中设置的int
具有private
修饰符。如果声明为public
,则可以使用object.XYZ--;
作为示例。
答案 1 :(得分:1)
你不能改变你从getter获得的原始int值,因为你获得了他的价值,而不是他在内存中的位置。 要更改原始值,必须使用setter(如果int不是静态的)。 此外,它使代码更具可读性和组织性
答案 2 :(得分:0)
如果您致电getXYZ()
并返回int
,然后修改int
,则不会更改包含int的类中的int
。
因为你将拥有该int的值而不是int
它自己的值。你可以说你将拥有你的个人副本。现在无论你做什么,你复制它都会影响主int
。
在这种情况下你必须打电话给。“
private void applyDamage(Monster target) {
target.setHealth(target.getHealth() - 1);
}