2012-08-14 12 views
5

En Scala podemos tener métodos sin parámetros, que pueden ser muy útiles para fines de DSL; también se usan para obtener automáticamente getters para campos de clase.¿Puede declarar métodos sin parámetros en Java para usar en Scala?

Estoy desarrollando una biblioteca Java que me gustaría integrar tan perfectamente como sea posible con Scala. Me preguntaba si hay una forma de anotar un método Java con una lista de parámetros vacía para que Scala lo reconozca como sin parámetros.

Por ejemplo

class Foo { 
    @ParameterLess 
    public String[] bar() { return someArray; } 
} 

para que en Scala que puedo hacer:

val f = new Foo 
f bar (0) 

sin tener el compilador para quejarse de la barra() que tiene una lista de argumentos vacía?

Alternativamente, ¿hay alguna manera de definir getters y setter de estilo Scala desde Java?

Nota: Por supuesto que sé que en este ejemplo particular que pueda solucionar el problema mediante la definición de

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

¿Has probado con bar (Object ... os)? – Luciano

+1

necesita llamar 'f bar() (0)' en su ejemplo para que el compilador pueda diferenciar entre parámetros e índice de matriz. – aishwarya

+0

Por supuesto. Me preguntaba si había una forma de insinuarle a Scala que 'bar()' debería actuar como 'barra' –

Respuesta

1

Esto probablemente responde a mi pregunta: ¿

Scala getters and setters in Java class

La respuesta es que se puede 't, a menos que recurras a algún engaño que involucre rasgos. Bueno, supongo que algún tipo de anotación à la @scala.reflect.BeanProperty sería una mejora útil.

Cuestiones relacionadas