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

标签 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(); 但做不到。
我可以使用嵌套类,但两个类都很长。

最佳答案

解决方案 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/

相关文章:

java - 为什么在 Eclipse 中查看包含的 Jar 库时看不到代码?

java - 创建通过检查相关列表中的项目来选择的查询

java - 不能从静态上下文中引用内部类,但前提是外部类是通用的

java - java的内部类会带来安全风险吗?

groovy - 如何引用外部类this?

java编译错误 "could not find or load main class main.java"

java.lang.UnsupportedClassVersionError : org/openqa/selenium/WebDriver : Unsupported major. 从 Java 7 到 Selenium 的次要版本 52.0 错误

java - 在正则表达式 :java 中获取非法字符范围

java - 使用匿名内部类 - 添加监听器和传递实例时发生冲突

c++ - 为什么 Visual C++ 不能部分特化模板中的类?