Java 使用中心类中的对象

标签 java

我正在用Java制作一个游戏,我有一个中央(引擎)类,它将渲染风景/玩家/等。

在 Engine 类中,我像这样创建玩家对象

public class Engine() {

    public static Player player;

    public Engine() {
        RenderPlayer();
    }

    protected static void RenderPlayer() {
        player = new Player();
    }
}

我还有一个 Canvas 类来处理播放器的绘制。 我希望能够调用 Players 函数,而无需创建新实例(因为我在 Engine 类中创建了播放器)。每当我尝试使用播放器中的函数时,我都会得到一个空指针期望。

我就是这么调用它的。

Engine.player.tick();

我花了几个小时试图弄清楚,有人可以告诉我我做错了什么,并帮助我朝正确的方向前进吗?谢谢。

最佳答案

您需要在调用 Engine.player.tick(); 之前调用 Engine.RenderPlayer(),因为此方法会分配一个新的 Player静态 player 属性的实例。在调用此方法之前,player 为 null,它会导致您的 NullPointerException

您只需更改即可解决此问题:

public static Player player;

至:

public static Player player = new Player();

关于Java 使用中心类中的对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16681886/

相关文章:

java - 在 Scala 中将类型作为参数传递

java - 如果我不从 MDC 中删除上下文数据会怎样?

java - Spring 安全 : Cannot call sendRedirect() after the response has been committed

java - 需要 mysql 的 hibernate 属性

java - Vert.x中的setHandler/map/composite有什么区别

java - 通过 JVM 参数相对路径加载 SSL 配置

java - 具有可变间距的格式化输出

一年中的 Java 毫秒数

java - eclipselink (JPA) 异常 : composite primary key @JoinColumn

java - 一个 log4j.xml - 许多脚本