Biorąc pod uwagę następujący obiekt Scala:Czy mogę uzyskać dostęp do val obiektu Scala bez nawiasów z Java?
object ScalaObject {
val NAME = "Name"
}
Wydaje się, że kompilator Scala generuje metody bez parametrów, aby uzyskać dostęp do pola NAME
. Jednak przy próbie dostępu do tego pola z Jawy, wygląda na to jedyny sposób, aby uzyskać dostęp do tego pola jest jako metoda bez parametrów, takich jak:
System.out.println(ScalaObject$.MODULE$.NAME());
Czy istnieje sposób, aby namówić kompilator Scala, aby umożliwić Java dostępu val
za oczekiwanego idiom Java jak:
System.out.println(ScalaObject$.MODULE$.NAME);
Czy to samo dzieje się z małymi literami? – ziggystar
To nie jest oczekiwany idiom * Java *, ale jest to oczekiwany idiom * Scala *. Pod względem kodu bajtowego Scala (prawie?) Zawsze eksponuje pola jako metody pobierające o tej samej nazwie. –
@AndrzejDoyle, nie jestem pewien co mówisz. W Javie oczekuje się dostępu do statycznych pól końcowych bez nawiasów, ponieważ jest to jedyny sposób, aby to zrobić. Sugeruje się, że w Scali oczekiwaną techniką jest użycie metod gettera. Niezależnie od tego, jaka jest preferowana technika Scali, nie wydaje się być istotna dla klienta Java API, który ma być zaimplementowany w Scali. –