scala - 干扰 Scala 动态特征的方法解析的字段?

标签 scala dynamic scalac

作为我第一次涉足 Dynamic Sc​​ala 领域,我想我会尝试通过 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/

相关文章:

scala - Array.empty == Array() 给出 false 但两者在类型和值方面看起来相同?

c# - 从 MethodInfo 生成 DynamicMethod

scala - 为什么 scalac 需要在期望 `Int` 的方法中装箱 `Any`

Scala 不确定性/缓存类?

scala - Mono存储库的SBT构建结构

scala - 展平集合映射

unit-testing - Scala 测试模拟隐式参数?

C# 4.0 'dynamic' 没有设置 ref/out 参数

php - 如何制作动态月、日、年错误信息

scala - 为什么反引号构造函数参数中的空格会破坏编译器?