如何在scala中生成方法

时间:2011-09-20 11:09:19

标签: scala metaprogramming

基本上,我有一个类,它有几个返回不同Seq的getter。但我需要在java代码中使用这些集合。我实现了显式返回java集合的备用getter,但我想以更隐式的方式执行此操作。这样的事情:

class X {

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

}

或任何其他方式。我不想一直自己写所有这些转换。 感谢。

2 个答案:

答案 0 :(得分:5)

查看JavaConversions / JavaConverters

如果您想使用注释,您可能需要查看AspectJ。

答案 1 :(得分:3)

这类似于@BeanProperty注释,创建一个完成工作的编译器插件应该相对容易。事实上,根据您的需求,您似乎可以在typer阶段之后挂钩插件(以便符号和类型都可用)。

修改

我建议你看看下面的讨论,他们可能会有所帮助:

以下是官方scala网站的简短指南