我想重新使用 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 上
提前致谢, 皮特
最佳答案
您需要传递 ButtonBuilder 通用参数才能以这种方式使用构建器:
ButtonBuilder<? extends ButtonBuilder> builder =
ButtonBuilder.create().minHeight(40.0).minWidth(40.0);
Button button1 = builder.onAction(clickHandler).build();
关于generics - JavaFX 构建器/Java 泛型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10446967/