aşağıdaki Scala nesne Verilen:Scala nesnesinin Java'ya parantez olmadan erişebilmesini sağlayabilir miyim?
object ScalaObject {
val NAME = "Name"
}
O Scala derleyici NAME
alanını erişmek için bir parametresiz yöntemini oluşturur anlaşılmaktadır.
System.out.println(ScalaObject$.MODULE$.NAME());
erişimine Java izin Scala derleyici ikna için bir yol var mı: ı Java bu alanı erişmeye çalıştığınızda Ancak, bu alanı erişmek için tek yol gibi görünüyor gibi parametresiz yöntemi olarak ise olarak beklenen Java deyim başına val
:
System.out.println(ScalaObject$.MODULE$.NAME);
Aynı durum küçük harfli vals ile de olur mu? – ziggystar
Beklenen * Java * deyim bu, beklenen * Scala * deyim. Bayt kodu açısından, Scala (hemen hemen her zaman?), Alanları her zaman aynı adı taşıyan alıcı yöntemleri olarak gösterir. –
@AndrzejDoyle, söylediklerinden emin değilim. Java'da, parantez olmadan statik final alanlarına erişmesi beklenir çünkü bunu yapmanın tek yolu. Düşündüğünüz şey, Scala'da beklenen teknik, getter yöntemlerini kullanmaktır. Ne olursa olsun, Scala'nın tercih ettiği teknik ne olursa olsun, Scala'da uygulanacak bir API'nin bir Java istemcisi ile alakalı görünmüyor. –