Dynamic Scala ランドへの最初の進出として、applyDynamic を介して Bean プロパティにアクセスしようと考えました。
私の最初の非常にラフなカットは
trait BeanProperties extends Dynamic {
def applyDynamic(name: String)(args: Any*) = {
if (args.length == 0)
PropertyUtils.getProperty(this, name)
else
null
}
}
となることによって
val bean = new JTextField("text") with BeanProperties
bean.getText should equal("text")
bean.text should equal("text")
ここまでは順調ですね!でもやってみると
bean.background should equal(bean.getBackground)
コンパイラは、メソッドを合成するのではなく、background という名前のフィールドへのアクセスを許可しようとして、不平を言います。
variable background in class Component cannot be accessed in javax.swing.JTextField with BeanPropertiesTest.this.BeanProperties
これは設計によるものですか、見落としですか、それとも修正が予定されているものですか?