java - 如何在 Java 中创建(实际上是)指针

标签 java pointers static

我知道Java中没有指针类型,但是我有一个对象数组,并且我需要一些东西来像指向数组第一个元素的指针一样工作,无论它是什么或指针改变了多少次。这是我正在开发的 Pokemon 游戏,在 Player 类中,我有

public class Player {

    public String name;
    public Pokemon[] party;
    public static Pokemon currentPokemon;

    public Player(){
        this.party = new Pokemon[6];
        currentPokemon = party[0];
    }
}

我需要 currentPokemon 始终“指向” party[0],这就是为什么我想将其设为静态,但是当我稍后将 pokemon 添加到数组中时,party[0] 包含 Pokemon 但 currentPokemon 为空。我如何获得这种类似指针的行为?

最佳答案

static 成员属于,并由所有实例共享。每次创建新实例时,都会覆盖 currentPokemon 的值(在构造函数中)。删除 static 修饰符,你应该没问题:

public class Player {

    public String name;
    public Pokemon[] party;
    public Pokemon currentPokemon; // Here

编辑:
根据克里斯蒂安·库克的最后评论,我想我现在理解了问题陈述。 currentPokemon 在构造函数中用 party[0] 初始化,当然是 null,因为 party 只是在上一行创建。与 c(++) 中的指针不同,currentPokemon 不会在 party 更新时更新 - 它不是指针,它只是对值 的引用party[0] 在初始化时就有。

获得您正在寻找的行为的最简单方法是不将 currentPokemon 存储为成员,而是有一个方法来检索它:

public Pokemon getCurrentPokemon() {
    return party[0];
}

关于java - 如何在 Java 中创建(实际上是)指针,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60700491/

相关文章:

c++ - shared_ptr 空指针和赋值

c++ - `const char*' 到 `char'

android - 如何使用 Android 调试桥 (ADB) 更改静态 IP 地址?

java - 如何获取用户输入的最小值和最大值? ( java )

java - 如何近似 vector 旋转

java - tic tac toe java 用户 vs 计算机

java - Recyclerview android studio "hiding"?

c - 为什么我可以在函数内而不是 main 中增加 char 数组位置

javascript - 通常只执行一次 javascript 的有效方法(通过 cookie)?

c++ - 重载函数中的静态变量