作为我第一次涉足 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
这是设计使然,疏忽还是计划修复的事情?
最佳答案
FWIW,我为此提出了修复方案 https://github.com/scala/scala/pull/98
如果它被接受,那么它确实会在 Dynamic 从 -Xexperimental 出来时得到修复。
关于scala - 干扰 Scala 动态特征的方法解析的字段?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6197804/