2011-09-20 62 views
2

基本上,我有一个类,有几个getter返回不同的Seq s。但我需要在java代码中使用这些集合。我实现了可替换的getter,它明确返回java集合,但我想以更隐含的方式来实现。类似的东西:如何在scala中生成方法

class X { 

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

} 

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

回答

3

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

编辑:

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

这里是从官方网站阶

+0

是否有任何教程为scalac创建的编译器插件的简短说明? – F0RR

5

看看JavaConversions/JavaConverters

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