2013-11-24 25 views
6

Ho creato una nuova applicazione Android in Android Studio 0.3.6 con un LoginActivity.java che è stato creato per me. Quando ho vista la funzione onCreate vedo il seguente codice:Android Studio che rappresenta la classe interna anonima

enter image description here

Ma quando clicco sul (view)-> { codice evidenziato Android Studio visualizza quello che mi sarei aspettato di vedere:

findViewById(R.id.sign_in_button).setOnClickListener(new View.OnClickListener() { 
    @Override 
    public void onClick(View view) { 
     attemptLogin(); 
    } 
}); 

Le mie domande

  1. Come si chiama?
  2. Perché Android Studio esegue questa operazione?
  3. È qualcosa che posso sfruttare poiché è molto meno digitante?

risposta

2

Sta facendo piegare il codice simile a Java 8Espressioni lambda (vedi la docs), anche se il codice non è effettivamente compilato con Java 8; è solo una comodità per un display più compatto.

Se si desidera utilizzare da soli, è possibile utilizzare Android Studio con Java 1.7 come lingua di compilazione, ma avrete bisogno di utilizzare strumenti di generazione V19 o successivi, e se si utilizza alcune caratteristiche del linguaggio , funzionerà solo su telefoni con Kit Kat o versioni successive. Funzioni Lambda non ti metteranno nei guai, però.

+6

in realtà questa è la caratteristica di java 8 – deviant

+1

In particolare, esiste un'impostazione sotto Codice pieghevole denominata "Chiusure (classi anonime che implementano un metodo)" che è possibile abilitare o disabilitare. Puoi anche piegare/aprire manualmente usando ctrl alt -/+, rispettivamente. Sfortunatamente non conosco alcun modo in cui si digita effettivamente la versione abbreviata e AS genera automaticamente il codice completo, solo il contrario. – JHH

Problemi correlati