影响Scala动态特性方法分辨率的字段?

影响Scala动态特性方法分辨率的字段?,scala,dynamic,scalac,Scala,Dynamic,Scalac,作为我第一次进入动态Scala领域的尝试,我想我应该尝试通过applyDynamic访问bean属性 我的第一个非常粗糙的伤口是 trait BeanProperties extends Dynamic { def applyDynamic(name: String)(args: Any*) = { if (args.length == 0) PropertyUtils.getProperty(this, name) else null } }

作为我第一次进入动态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

这是故意的、疏忽的还是计划修复的?

在Martin Odersky的Scala Lang邮件列表上回答

我认为,当Dynamic从-XeExperimental中出来时,这个问题应该得到解决


FWIW,我提出了一个解决方案


如果它被接受,当Dynamic从-Xexperimental出来时,它确实会被修复。

似乎有很多潜在的兴趣,但没有人有任何想法,Scala邮件列表奇怪地保持沉默。