Java 隐藏方法

Java hidden methods

我正在 Java 中创建一个新的游戏引擎,我想为 GameWindow class 提供一些 public 静态方法,例如 setTitle()、resize(),但我想要再创建一个能够创建整个 window 的方法。此方法应该只能由引擎的 class 访问,不允许开发人员创建 window(因此此方法将仅由引擎调用,正如我在正确的初始化时刻所说)。

现在如何向世界隐藏此方法?我正在寻找类似 "friend" 的 C++ 方式。

那些 classes(Engine 和 GameWindow class)在不同的包中。

P.s。我在其他一些引擎中找到了一种使用抽象 classes 的方法,但如果可能的话,有人可以解释我该怎么做吗?

您可以使用以下技巧:

class GameWindow {
  GameWindow() {...}
  protected void methodOnlyforEngine() {...}
  ...
}
class Engine {
  private class GameWindowProxy extends GameWindow {
     GameWindowProxy(GameWindow ex) { super();...}
  }

  private final GameWindowProxy proxy;
  Engine(GameWindow window) {
     proxy = new GameWindowProxy(window);
  }
  ...
  proxy.methodOnlyforEngine(); 
}