Java:从getter或使用setter减少原语的值?

时间:2015-05-05 12:56:31

标签: java

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); 
}

3 个答案:

答案 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); 
}