2012-11-12 7 views
7

In Java ho una classe che implementa un'interfaccia:Perché non riesco ad accedere a una variabile dichiarata in una classe, che implementa un'interfaccia Java, da Scala?

AlertDialog implements DialogInterface 

Se alcune variabili sono dichiarate all'interno dell'interfaccia ho potuto accedervi:

AlertDialog.BUTTON_POSITIVE 

Ma a Scala la linea di cui sopra non compilare . Sembra che sia nascosto. C'è un modo per accedere a queste variabili in Scala senza creare un nuovo oggetto o fare qualcos'altro di hacky?

risposta

2

In Scala non è possibile accedere a queste variabili dalla classe AlertDialog ma è possibile utilizzare l'interfaccia stessa come oggetto per accedervi.

modo da poter accedere direttamente alle variabili dall'interfaccia:

DialogInterface.BUTTON_POSITIVE 
+1

attendere un minuto. inserisci una domanda ** E ** una risposta allo stesso tempo ?? – UmNyobe

+4

@UmNyobe Questa è una cosa perfetta da fare. Vedi http://meta.stackexchange.com/questions/12513/should-i-not-answer-my-own-questions –

+1

puoi rispondere alla tua stessa domanda. va bene. Mettere postare una domanda e una risposta allo stesso è fastidioso. Inoltre risponde come se fosse una persona diversa :). – UmNyobe

14

Per dare un po 'più in dettaglio: la ragione per queste non possono essere accesed è che George sta parlando di membri statici definiti sull'interfaccia. Scala non ha membri statici, ma crea uno object, che è una classe regolare con una singola implementazione. Quando si sta estendendo da un'interfaccia Java, Scala estenderà solo i membri non statici, poiché quelli statici vengono considerati come in un compagno object. L'oggetto associato è identico all'interfaccia, quindi puoi accedervi come DialogInterface.BUTTON_POSITIVE.

Problemi correlati