我开始在Android上使用Scala,很多访问器方法都是标准的JavaBeans访问器,例如: setTitle(...)
和getTitle()
。在scala中使用title_=
和title
方法要好得多,所以我可以编写如下代码:
button.title = "Foo"
有没有办法从 JavaBeans样式的访问器中自动映射这些,可能使用Dynamic
特征?
答案 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/140和http://www.sts.tu-harburg.de/people/mi.garcia/ScalaCompilerCorner/)。