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();
}
我正在 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();
}