Java 模块本地公共方法
我有一个名为Java 模块本地公共方法,java,module,Java,Module,我有一个名为app.gui的模块(Jigsaw),具有以下包层次结构: app.gui app.gui内部: base(GuiElement.java) 控件(SampleControl.java) 布局(SampleControlPane.java) 该模块包含自定义JavaFX节点 问题 我想: 保持包的结构 访问SampleControlPane.java源代码注释(如下)中提到的方法 将方法getRootNode()封装起来,这样它就只能在当前模块中访问 我该怎么做?如果我将
app.gui
的模块(Jigsaw),具有以下包层次结构:
- app.gui
- base(GuiElement.java)
- 控件(SampleControl.java)
- 布局(SampleControlPane.java)
- 保持包的结构
- 访问
源代码注释(如下)中提到的方法SampleControlPane.java
- 将方法
封装起来,这样它就只能在当前模块中访问getRootNode()
getRootNode()
设置为公共,则可以在模块外部访问它
源代码如下:
[GuiElement]是所有自定义节点的父节点
public abstract class GuiElement<T extends Region> {
private final T rootNode;
public GuiElement(T rootNode) {
Objects.requireNonNull(rootNode, "rootNode must not be null");
this.rootNode = rootNode;
}
//Package &S ubclasses API
protected final T getRootNode() {
return rootNode;
}
}
public final class SampleControl extends GuiElement<HBox> {
public SampleControl() {
super(new HBox());
getRootNode().getChildren().add(new Button("My Button"));
}
}
public final class SampleControlPane extends GuiElement<VBox> {
public SampleControlPane(SampleControl... controls) {
super(new VBox());
for (SampleControl c : controls) {
//can't access c.getRootNode() here
}
}
}