Scala Bean Properties

前の日記の通りScalaではアクセサが foo() とか foo_$eq() みたいな不思議なアクセサができるんですが、これをJavaライクな感じにできるようです。

http://tomobag.blogspot.com/2008/02/scala-bean-properties.html

@BeanProperty アノテーションをつけるだけです。

import scala.reflect.BeanProperty
class Foo
{
  @BeanProperty
  var name = "hoge hoge"
}


できたクラスを確認してみると。。

    public void setName(String x$1)
    {
        name_$eq(x$1);
    }

    public String getName()
    {
        return name();
    }

    public void name_$eq(String x$1)
    {
        name = x$1;
    }

    public String name()
    {
        return name;
    }

こんな風に見慣れたアクセサとScalaのアクセサ両方ができていました。
既存のJavaライブラリとのやり取りがある場合便利かもしれないですね