可以说我有两个类和两个方法:
class Scratch {
private class A{}
private class B extends A{}
public Optional<A> getItems(List<String> items){
return items.stream()
.map(s -> new B())
.findFirst();
}
public Optional<A> getItems2(List<String> items){
return Optional.of(
items.stream()
.map(s -> new B())
.findFirst()
.get()
);
}
}
Run Code Online (Sandbox Code Playgroud)
为什么getItems2编译时getItems会出现编译器错误
incompatible types: java.util.Optional<Scratch.B> cannot be converted to java.util.Optional<Scratch.A>
Run Code Online (Sandbox Code Playgroud)
所以,当我返回get的值和使用编译器再次包装它时,会识别继承,但如果我直接使用结果,则不会.OptionalfindFirstOptional.offindFirst
我想知道,在Moose中存储哈希哈希的最佳方法是什么.让我们举一个像这样的Hash:
my %hash = ('step1' => {'extraction' => \$object1,
'analysis' => \$object2},
'step2' => {'extraction' => \$object3,
'analysis' => \$object4});
Run Code Online (Sandbox Code Playgroud)
但我想将这个保存在驼鹿属性中.我该如何组织访问(阅读,写作).网上的例子主要是"扁平"哈希.但是你可以使用像Moose :: Meta :: Attribute :: Native :: Trait :: Hash这样的助手.哈希散列有类似的东西吗?
原因是,我想迭代步骤键并访问其中的对象实例.或者是否有更好的,更像Moose的方式来做到这一点?
提前致谢!!!
我有一个带有很多控件的GUI(标签,文本字段,组合框和复选框).我在Gridpane中组织它们并希望将它们放在行和列中(就像它用于gridpane布局一样).
如果我使用FXML,我会这样写:
<GridPane>
<Label GridPane.rowIndex="0" GridPane.columnIndex="0" text="field1"/>
<TextField GridPane.rowIndex="0" GridPane.columnIndex="1"/>
<Label GridPane.rowIndex="1" GridPane.columnIndex="0" text="field2"/>
<TextField GridPane.rowIndex="1" GridPane.columnIndex="1"/>
</GridPane>
Run Code Online (Sandbox Code Playgroud)
现在问题:如果我想在第0行和第1行之间添加一行,我需要增加下一行的行索引.现在让我们取20行和5列,我想在第一行之后添加一行.这对我来说可以为第一个下面的每一行增加rownumber.
有没有类似行元素的东西,它的子控件在同一行中随着列数的增加而定位?我想到这样的事情:
<GridPane>
<GridPane.Row>
<Label text="field1"/>
<TextField/>
</GridPane.Row>
<GridPane.Row>
<Label text="field2"/>
<TextField/>
</GridPane.Row>
</GridPane>
Run Code Online (Sandbox Code Playgroud)
我知道VBox和HBox,这几乎是我想要的,但我希望在固定宽度的列中有元素.