我想重新使用Builder实例来创建几个控件,但是我遇到了我不理解的编译错误。我认为他们是由于我不能正确理解泛型。有人可以帮忙吗?
ButtonBuilder builder = ButtonBuilder.create().minHeight(40.0).minWidth(40.0);
Button button1 = builder.onAction(clickHandler).build(); // Error
Button button2 = ButtonBuilder.create().minHeight(40.0).minWidth(40.0).onAction(clickHandler).build(); //OK
其中clickHandler是EventHandler<ActionEvent>
我得到的错误是
error: cannot find symbol
Button button1 = builder.onAction(clickHandler).build();
^
symbol: method build()
location: class ButtonBaseBuilder
ButtonBaseBuilder实现了Builder,所以它应该有一个build()方法,不应该吗?此外,如果我一起运行所有东西(如在button2中),那就没关系。
这是在JDK 7.0u4和JavaFX SDK 2.1
上提前致谢, 皮特
答案 0 :(得分:2)
ButtonBaseBuilder
没有build
方法。 ButtonBuilder
,extends ButtonBaseBuilder
,因为implements Builder<Button>
而有一个{。}}。
这应该有效:
Button button1 = ((ButtonBuilder) builder.onAction(clickHandler)).build();
答案 1 :(得分:2)
您需要传递ButtonBuilder泛型参数以使用构建器:
ButtonBuilder<? extends ButtonBuilder> builder =
ButtonBuilder.create().minHeight(40.0).minWidth(40.0);
Button button1 = builder.onAction(clickHandler).build();