Java静态嵌套类位于单独的文件中

时间:2020-07-21 13:09:04

标签: java inner-classes

我正在使用自己的游戏引擎,碰到墙使我停下来。在编写游戏代码时,我只会将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();,但不能做。
我可以使用嵌套类,但是两个类都非常长。

1 个答案:

答案 0 :(得分:0)

解决方案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的构造函数不是私有的)

然后从代码中的任何地方

GameEngine.logger.logError();

标准日志记录API

当Java中存在许多API时,没有理由重新实现日志记录API。

例如,有一个众所周知的log4j:https://logging.apache.org/log4j/2.x/manual/api.html

还有Java中的一个标准,可以隐藏实际的记录器实现并提供通用接口(https://www.vogella.com/tutorials/Logging/article.html

相关问题