我有三节课:
一个处理我主要游戏操作的课程。它的名字是'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();
}
}
然而,这是错误发生的地方:
这个错误意味着什么,我该如何预防呢?另外,有没有更好的方法来实现这个?
注意:我需要从多个类访问单例实例,因此我需要这个单例类。
答案 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
}