你能在Java中声明无参数方法以供在Scala中使用吗?

5
在Scala中,我们可以拥有无需参数的方法,这对于DSL目的非常有用;它们也用于自动定义类字段的getter。我正在开发一个Java库,希望能够尽可能地与Scala无缝集成。我想知道是否有一种方法可以使用空参数列表对Java方法进行注释,以便Scala将其识别为无需参数的方法。例如:
class Foo {
  @ParameterLess
  public String[] bar() { return someArray; }
}

这样我就可以在Scala中执行:

val f = new Foo
f bar (0)

如何在没有编译器抱怨bar()拥有一个空参数列表的情况下进行操作?

另外,是否有一种方法可以从Java中定义类似于Scala的getter和setter?

注意:当然我知道在这个特定的例子中,我可以通过定义来解决这个问题。

public String bar(int i) { return someArray[i]; }

你尝试过使用 bar(Object... os) 吗? - Luciano
1
你需要在你的示例中调用 f bar() (0),这样编译器才能区分参数和数组索引。 - aishwarya
当然可以。我想知道是否有一种方法来提示Scala,使bar()表现为bar - Edoardo Vacchi
1个回答

1
这可能回答了我的问题: Java类中的Scala getters和setters 答案是除非您使用一些涉及trait的诡计,否则您无法实现。嗯,我猜某种注释方式,类似于 @ scala.reflect.BeanProperty ,将是一个有用的改进。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接