我可以从setFoo和getFoo生成foo_ =和foo访问器吗?

时间:2011-06-05 15:22:42

标签: scala

我开始在Android上使用Scala,很多访问器方法都是标准的JavaBeans访问器,例如: setTitle(...)getTitle()。在scala中使用title_=title方法要好得多,所以我可以编写如下代码:

button.title = "Foo"

有没有办法从 JavaBeans样式的访问器中自动映射这些,可能使用Dynamic特征?

3 个答案:

答案 0 :(得分:3)

我认为Dynamic 工作,除了它目前不支持语法糖。此外,它将返回AnyRef,因为无法传递预期的返回类型。

当然,你可以简单地使用pimp我的库来添加适当的Scala风格的getter和setter。

答案 1 :(得分:0)

我不确定Android是否支持此功能,但您可以使用@BeanProperty

class X {
  @scala.reflect.BeanProperty
  var y:String = _
}

val x = new X()
x.setY("Test")
println(x.getY) //--> Test

Bean支持有更多注释,例如@BooleanBeanProperty@BeanInfo

答案 2 :(得分:0)

我不认为动态特性会对你有所帮助。我猜你需要反思来使用这些方法,并且它们不会通过反射被发现。

我认为你最好的机会是创建一个scala编译器插件(参见http://www.scala-lang.org/node/140http://www.sts.tu-harburg.de/people/mi.garcia/ScalaCompilerCorner/)。