【发布时间】:2018-05-16 09:25:49
【问题描述】:
(请注意,我之前从未编写过合适的程序,请耐心等待)
我正在尝试编写一个 if 语句来比较两个实例的 position 字段的值(它实际上返回整数“位置”)。问题是,它们是不同类的私有字段,所以我不能直接访问它们。相反,我在每个类中创建了返回变量的方法。
现在在我的 if 语句中,这是真/假的条件:
if (enemy1.getPosition() = player.getGun1Position())
现在的问题是,如果我使用=,机器会假设我正在尝试为enemy1 的位置分配一个值,而我一直在研究发现== 比较的是内存位置而不是两个字段的值。
我也看过
.equals()
可以使用,但我假设它不能在这里使用,因为
enemy1.getPosition().equals(player.getGun1Position())
尝试时出错。
注意:我无法将字段更改为公开,因为这是用于分配,并且字段必须是私有的。
任何帮助将不胜感激:)
【问题讨论】:
-
position是什么类型? -
您返回的是
int还是Integer? -
如果
getPosition()返回某种对象(例如Integer),请使用.equals。如果返回基本类型(如int或double),则使用==。 -
equals()尝试时会出现什么错误? -
还要进一步阐述khelwood所说的:如果你想比较两个自定义类,你需要
@Overrideequals方法并用你的自定义逻辑填充它以进行比较。如果您不这样做,则与使用==进行比较相同。