首页 > 解决方案 > 如何在Java中制作(有效的)指针

问题描述

我知道 Java 中没有指针类型,但是我有一个对象数组,并且我需要一些东西来像指向数组第一个元素的指针一样工作,无论它是什么或指针改变了多少次。这是我正在开发的口袋妖怪游戏,在 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 始终“指向”派对 [0],这就是为什么我想将其设为静态的原因,但是当我后来将 pokemon 添加到数组中时,party [0] 包含了 Pokemon 但 currentPokemon 为空。如何获得这种类似指针的行为?

标签: javapointersstatic

解决方案


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

推荐阅读