<t>无法解析为Java </t>类型

时间:2014-02-03 11:22:48

标签: java eclipse

我有三节课:

一个处理我主要游戏操作的课程。它的名字是'PlatformerGame'。 注意:删除了所有与游戏相关的内容。

public class PlatformerGame {

    public PlatformerGame()
    {

    }

}

然后,我有一个名为'PlatformerSingleton'的类,它只是提供一个PlatformerGame实例。

public class PlatformerSingleton {

    private static PlatformerGame game;

    protected PlatformerSingleton()
    {}

    public static PlatformerGame getGame()
    {
        if (game == null)
            game = new PlatformerGame();

            return game;
    }

}

最后,我得到了我的应用程序的入口点,除了获取PlatformerGame的实例并调用它的'start'方法之外什么都不做。

public class Entry {

    public static void main(String[] args) {
        new PlatformerSingleton.getGame().start();
    }

}

然而,这是错误发生的地方:

The error

这个错误意味着什么,我该如何预防呢?另外,有没有更好的方法来实现这个?

注意:我需要从多个类访问单例实例,因此我需要这个单例类。

4 个答案:

答案 0 :(得分:4)

请勿在{{1​​}}

行中添加new

只需将您的行更改为:

new PlatformerSingleton.getGame().start();

你不是在这里创建PlatformerSingleton.getGame().start(); 对象,你只是调用new类的static方法,其中使用PlatformerSingleton创建类的对象

答案 1 :(得分:2)

删除该通话中的new

new PlatformerSingleton.getGame().start();

目前,您似乎正在尝试实例化一个名为PlatformerSingleton.getGame的类(getGame中名为PlatformerSingleton的静态嵌套类。)

您正在寻找PlatformerSingleton内的静态方法。由于它是 static ,您根本不想使用new进行实例化。

编译器发现语法是正确的,但它找不到这样的类,因此会抛出错误。这些错误对于正确调试来说有点困难(因为实际错误是 syntactical ),所以你需要进一步修复它。

答案 2 :(得分:0)

只需删除new关键字(您不需要new,因为您在PlatformerGame方法中创建了getGame个实例):

 public static void main(String[] args) {
     PlatformerSingleton.getGame().start();
 }

答案 3 :(得分:0)

由于getGame()static方法,因此您无需使用new关键字来调用该方法。

public static void main(String[] args) {
    PlatformerSingleton.getGame().start(); // new keyword is not required
}

如果getGame()不是static,那么它只需要一个PlatformerSingleton类的实例来调用它,看起来像

public static void main(String[] args) {
    new PlatformerSingleton().getGame().start(); // if getGame() was a non-static method
}