java - 我可以使用另一个对象变量修改两个或多个对象实例吗?

标签 java

我正在编写一个简单的两人游戏控制台应用程序,我想知道我是否可以执行以下操作。我对整个 Java 值传递/引用文章感到困惑......

Player p1 = new Player("John");
Player p2 = new Player("Sam");
Player current = p1;

while(p1.life > 0 && p2.life > 0) {
    current.doSomething();
    if(current.name.equals(p1.name)) {
        current = p2;
    } else {
        current = p1;
    }
}

我担心变量current可能会被修改,但p1p2不会被修改。我要修改的正是这两个实例。我只是不想为每个玩家复制整个代码块,从而导致非常庞大的 if-else 语句。

最佳答案

您的理解是错误的。当前p1p2都是引用。您的案例中有 2 个实例和 3 个引用文献。因此,current 指向的实例可以被修改,这将反射(reflect)在 p1p2 中。

关于java - 我可以使用另一个对象变量修改两个或多个对象实例吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29101084/

相关文章:

java - 如何停止 3D 转换为 2D 坐标,在另一侧创建 "ghost"坐标?

java - 具有另一个返回 void 的方法的方法的单元测试

java - 什么是最好的 java html 解析器?

java - 语法错误: Unexpected token ILLEGAL in Node Javascript

java - 访问字符串中超过 2^31 个字符的字符

java - 使用 `CrudRepository` 通过键引用添加多对多关系

java - 如何单击自动建议输入文本字段中的选项? Selenium 网络驱动程序

java SSLHandshakeException 一般 SSLEngine

java - 如何在通过java代码运行jmeter时传递自定义属性而不编辑jmx文件

java - JDK 1.5 属性加载 unicode 字符