Как генерировать методы в Scala - PullRequest
2 голосов
/ 20 сентября 2011

В принципе, у меня есть класс, который имеет несколько геттеров, которые возвращают разные Seq с. Но мне нужно использовать эти коллекции в коде Java. Я реализовал альтернативные методы получения, которые явно возвращают коллекции Java, но я хочу сделать это более неявным способом. Примерно так:

class X {

     @AsJava //annotation that generates method someSeqJava: java.util.List[Int]
     def someSeq: Seq[Int] = Seq(1,2,3,4)

}

Или любым другим способом. Я не хочу писать все эти преобразования сам все время. Спасибо.

Ответы [ 2 ]

5 голосов
/ 20 сентября 2011

Взгляните на JavaConversions / JavaConverters.

Если вы хотите использовать аннотации, вам может понадобиться взглянуть на AspectJ.

3 голосов
/ 20 сентября 2011

Это похоже на аннотацию @BeanProperty, и должно быть относительно легко создать плагин компилятора, который сделает эту работу.Фактически, исходя из ваших потребностей, вы можете подключить плагин после фазы typer (чтобы все символы и типы были доступны).

РЕДАКТИРОВАТЬ:

Я бы посоветовал вам взглянуть на следующие обсуждения, они могут помочь:

Вот краткое руководство с официального сайта scala

...