【发布时间】:2020-11-10 21:02:58
【问题描述】:
我正在开发自己的游戏引擎,但遇到了阻止我的墙。当我要编写游戏时,我会简单地使用我的 gameengine.jar 作为库。但我想引用一些具有神级“GameEngine”的类。
在这个例子中,我想使用一个简单地记录错误的“Logger”类。 GameEngine 和 Logger 都没有构造函数,它们是静态的。
public class GameEngine{
public static Logger logger = Logger; // ERROR
}
class Logger{
static void logError(){
System.out.println("Error");
}
}
我想做GameEngine.logger.logError();,但做不到。
我可以使用嵌套类,但两个类都很长。
【问题讨论】:
-
我很确定 Java 没有“上帝类”的概念,但是您可以将“GameEngine”作为一个包而不是“Engine”或“Game”和“Logger”一个类?如果导入恰到好处,就可以使用你想要的语法。
-
为什么要做GameEngine.logger.logError()?它是一个静态类,你可以只做 Logger.logError() 并且它会做同样的事情吗?或者,如果你真的想要,你可以添加一个 getter,然后它变成 GameEngine.getLogger().logError(); ?似乎你可以做你想做的事,而不是你想要的方式。此外,它们都有构造函数,只是如果您没有告诉它使用不同的构造函数,它会使用默认构造函数。如果您明确地将构造函数设为私有,则只会丢失构造函数。仅仅因为一个类是静态的并不意味着它没有构造函数
标签: java inner-classes