2012-08-14 10 views
5

W Scala możemy mieć metody bez parametrów, które mogą być bardzo przydatne do celów DSL; są również używane do automatycznego definiowania modułów pobierających dla pól klasy.Czy można zadeklarować metody bez parametrów w Javie do użycia w Scali?

Pracuję nad biblioteką Java, którą chciałbym zintegrować tak bezproblemowo ze Scala, jak to tylko możliwe. Zastanawiam się, czy istnieje sposób na opisanie metody Java z pustą listą parametrów, aby Scala rozpoznała ją jako bez parametrów.

Na przykład

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

tak że w Scala mogę zrobić:

val f = new Foo 
f bar (0) 

bez kompilator narzekać bar() posiadający pustą listę argumentów?

Czy istnieje sposób zdefiniowania pobierających i ustawiających w stylu Scala z Javy?

Uwaga: oczywiście wiem, że w tym konkretnym przykładzie mogę obejść ten problem poprzez zdefiniowanie

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

Czy próbowałeś z prętem (Object ... os)? – Luciano

+1

musisz wywołać 'f bar() (0)' w twoim przykładzie, aby kompilator mógł rozróżnić parametry i indeks tablicy. – aishwarya

+0

Oczywiście. Zastanawiam się, czy istnieje sposób na wskazanie Scali, że 'bar()' powinien działać jako 'bar' –

Odpowiedz

1

Prawdopodobnie odpowiedzi na moje pytanie:

Scala getters and setters in Java class

Odpowiedzią jest to, że można nie, dopóki nie zastosujesz jakiegoś oszustwa związanego z cechami. Sądzę, że jakiś rodzaj adnotacji à la @scala.reflect.BeanProperty byłby przydatny.

Powiązane problemy