2012-08-14 12 views
5

In Scala possiamo avere metodi parametrici, che possono essere molto utili per scopi DSL; vengono anche utilizzati per i getter auto-definenti per i campi di classe.Puoi dichiarare metodi senza parametri in Java per l'uso in Scala?

Sto sviluppando una libreria Java che vorrei integrare il più perfettamente possibile con Scala. Mi chiedevo se c'è un modo per annotare un metodo Java con un elenco di parametri vuoto in modo che Scala lo riconosca come senza parametri.

Per esempio

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

in modo che in Scala posso fare:

val f = new Foo 
f bar (0) 

senza avere il compilatore di cui lamentarsi bar() con una lista di argomenti vuota?

In alternativa, c'è un modo per definire getter e setter in stile Scala da Java?

Nota: naturalmente so che in questo particolare esempio posso aggirare il problema definendo

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

Hai provato con la barra (oggetto ... os)? – Luciano

+1

è necessario chiamare 'f bar() (0)' nell'esempio in modo che il compilatore possa distinguere tra parametri e indice di array. – aishwarya

+0

Naturalmente. Mi chiedevo se ci fosse un modo per suggerire a Scala che 'bar()' dovrebbe agire come 'bar' –

risposta

1

Questo risponde probabilmente la mia domanda:

Scala getters and setters in Java class

La risposta è che si può a meno che non ricorra a qualche inganno che coinvolge i tratti. Bene, immagino che un qualche tipo di annotazione allo @scala.reflect.BeanProperty sarebbe un utile miglioramento.