//fix this/ Javaコードの間違いをさがせ!
このシリーズは、あなたのコーディング・スキルを試すコーナーです。毎号オラクルのJavaエバンジェリストたちが、Javaコードに関する難問を出題し、正解と解説を掲載します。是非、毎号チャレンジして貴方のコーディング能力の向上にお役立て下さい。
Articles
Java
Java技術関連記事
Fix This
このシリーズは、あなたのコーディング・スキルを試すコーナーです。毎号オラクルのJavaエバンジェリストたちが、Javaコードに関する難問を出題し、正解と解説を掲載します。是非、毎号チャレンジして貴方のコーディング能力の向上にお役立て下さい。
JavaFXのクールな機能の1つにバインディング機能があります。 JavaFXプロパティがバインディングに含まれている場合、1つのオブジェクトに対する変更が自動的にもう1つのオブジェクトにも反映されます。 この機能によって画面表示とそのもとになっているデータとの同期を自動的に維持できるため、特にグラフィカル・ユーザー・インタフェースの作成時に効果を発揮します。
JavaFXアプリケーション用の次のコードについて考えてみましょう。
...
IntegerProperty myInt = new SimpleIntegerProperty(5);
IntegerProperty myBoundInt = new SimpleIntegerProperty(0);
myBoundInt.bind(myInt);
myInt.set(8);
System.out.println("My bound integer's value is: "+ myBoundInt);
myBoundInt.set(5);
System.out.println("My bound integer's value is: "+ myBoundInt)
このコードを実行した場合の出力は以下のどれになるでしょうか。
1)
My bound integer's value is: 8
My bound integer's value is: 5
2)
My bound integer's value is: 5
My bound integer's value is: 5
3)
My bound integer's value is: 8
My bound integer's value is: 8
4)
My bound integer's value is: 8
Exception***
<ヒント>
JavaFX 2.0ドキュメント『Using JavaFX Properties and Binding』をご覧ください。
正解は4)です。myBoundIntのsetメソッドを呼び出すところで例外が発生します。なぜでしょうか。myBoundIntはバインドされた変数であり、直接変更できないからです。myBoundIntの値を変更するには、myBoundIntがバインドされているプロパティであるmyIntを変更する必要があります。