java - 如何在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 为空。如何获得这种类似指针的行为?
解决方案
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];
}
推荐阅读
- node.js - 如何设置 nginx 配置以从反应 js 与 docker 中的节点 js 通信
- java - 子类能否重载已声明为抽象的超类的方法
- c# - 为什么我在添加迁移时收到 argumentNullException
- javascript - 无法将 JavaScript 代码插入 R shiny.semantic 应用程序
- git - Git拉取Linux中多个用户的共享访问权限
- c# - 使用 C# 的异常检测器
- azure-data-factory - 无法从 Azure 数据工厂将记录更新到 Dataverse 表
- java - Keycloak - 是否可以更改角色的名称?
- python - 如何动态组织不同长度的算子组
- ios - Runner文件夹下的Flutter AppDelegate.m文件对于ios配置不存在