2

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にあります

前もって感謝します、ピート

4

2 に答える 2

2

ButtonBaseBuilderメソッドはありませんbuildButtonBuilder、これは、それextends ButtonBaseBuilderが 1 つあるためimplements Builder<Button>です。

これはうまくいくはずです:

Button button1 = ((ButtonBuilder) builder.onAction(clickHandler)).build();
于 2012-05-04T10:39:07.720 に答える
2

そのようにビルダーを使用するには、ButtonBuilder ジェネリック パラメーターを渡す必要があります。

    ButtonBuilder<? extends ButtonBuilder> builder =
                     ButtonBuilder.create().minHeight(40.0).minWidth(40.0);
    Button button1 = builder.onAction(clickHandler).build(); 
于 2012-05-04T11:00:51.923 に答える