2012-11-12 14 views
7

W Javie Mam klasy, która implementuje interfejs:Dlaczego nie mogę uzyskać dostępu do zmiennej zadeklarowanej w klasie, która implementuje interfejs Java, od Scala?

AlertDialog implements DialogInterface 

Jeśli niektóre zmienne są deklarowane wewnątrz interfejsu mogę do nich dostęp:

AlertDialog.BUTTON_POSITIVE 

Ale w Scala powyższa linia nie kompiluje . Wygląda na to, że jest ukryty. Czy jest jakiś sposób uzyskania dostępu do tych zmiennych w Scali bez tworzenia nowego obiektu lub robienia czegokolwiek innego?

Odpowiedz

2

W programie Scala nie ma dostępu do tych zmiennych z klasy AlertDialog, ale można użyć samego interfejsu jako obiektu, aby uzyskać do nich dostęp.

Więc można bezpośrednio uzyskać dostęp do zmiennych z interfejsu:

DialogInterface.BUTTON_POSITIVE 
+1

chwileczkę. piszesz pytanie ** ORAZ ** odpowiedź w tym samym czasie? – UmNyobe

+4

@UmNyobe Jest to doskonale w porządku. Zobacz http://meta.stackexchange.com/questions/12513/should-i-not-answer-my-own-questions –

+1

możesz odpowiedzieć na własne pytanie. w porządku. Umieszczanie pytania i odpowiedź jest kłopotliwa. A on odpowiada, jakby był inną osobą :). – UmNyobe

14

Aby dać trochę więcej szczegółów: powód nie można ich accesed jest to, że George jest mówić o członków statycznych określonych w interfejsie. Scala nie ma statycznych elementów - zamiast tego tworzy się object, która jest zwykłą klasą z pojedynczą implementacją. Gdy rozszerzasz interfejs Java, Scala rozszerzy tylko niestatyczne elementy, ponieważ statyczne są traktowane jako towarzyszące object. Obiekt towarzyszący ma taką samą nazwę jak interfejs, więc można uzyskać do niego dostęp jako DialogInterface.BUTTON_POSITIVE.

Powiązane problemy