我想重新使用一個Builder實例來創建幾個控件,但我得到編譯錯誤,我不明白。我認爲他們是由我不正確地理解泛型造成的。誰能幫忙?JavaFX的建設者/ Java的泛型
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實現生成器,它應該有一個build()方法,不應該嗎?另外,如果我一起運行所有內容(如按鈕2),那就OK了。
這是JDK 7.0u4和JavaFX SDK 2.1
由於提前, 皮特
謝謝!我想我明白;在ButtonBuilder的類型中添加通用參數會告訴編譯器'記住'它的類型(通過推理) - 如果沒有它,那麼XXXBuilder方法將返回它們自己的類型,這是ButtonBuilder的超類。 –
是的,沒錯! –