我正在开发自己的游戏引擎,但遇到了阻碍我前进的墙。当我编写游戏代码时,我将简单地使用我的 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();
但做不到。
我可以使用嵌套类,但两个类都很长。
最佳答案
解决方案 A:
public class Logger{
public static void logError(){
System.out.println("Error");
}
}
然后从代码中的任何位置:
Logger.logError();
解决方案 B,如果你想从顶部的 GameEngine 调用它:
public class GameEngine{
public static Logger logger = new Logger();
}
(意味着 Logger 的构造函数不是私有(private)的)
然后从代码中的任何地方:
GameEngine.logger.logError();
标准日志记录 API
您没有理由重新实现一个日志记录 API,而 Java 中已经存在许多记录 API。
例如众所周知的 log4j:https://logging.apache.org/log4j/2.x/manual/api.html
Java 中还有一个标准来隐藏实际的记录器实现并提供一个通用接口(interface) (https://www.vogella.com/tutorials/Logging/article.html)
关于单独文件中的 Java 静态嵌套类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63015249/