English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

Analisi dell'uso delle classi interne anonime e delle funzioni di callback in Android

Questo esempio descrive l'uso della classe interna anonima e della funzione di callback nel programming Android. Condividiamo questo con tutti per riferimento, come segue:

Nella nostra sviluppo Android, utilizziamo spesso alcune classi interne anonime e le loro funzioni di callback, ad esempio, quando configuriamo un listener per un pulsante, di solito implementiamo l'interfaccia OnCLickListener e ridefiniamo il metodo Onclick(), questo è la classe interna anonima e la funzione di callback, allora quanto capisci della classe interna anonima e della funzione di callback in Java? Questo documento fornisce una spiegazione dettagliata.

Prima di tutto, dovrebbe sapere che la classe interna è una parte principale dell'aggiunta del linguaggio Java. La classe interna può essere posizionata praticamente in qualsiasi parte di una classe, può essere al livello degli attributi d'istanza, o all'interno di un metodo, persino una parte di un'espressione. Le classi interne di Java sono classi interne, classi locali e classi anonime, ora parleremo della classe interna anonima.

A. Sulla funzione di callback

La classe interna anonima utilizza la funzione di callback, cos'è una funzione di callback?

Il cosiddetto callback è quando il programma cliente C chiama una funzione A nel programma di servizio S, e poi S chiama indietro una funzione B nel programma C, per il programma C, questa B si chiama funzione di callback. Ad esempio, la funzione di processo della finestra in Win32 è una funzione di callback tipica. Di solito, C non chiama B da solo, l'obiettivo di fornire B è farlo chiamare da S, e deve fornirlo. Poiché S non conosce il nome del B fornito da C, S concorda con la specifica dell'interfaccia di B (prototipo della funzione), quindi C informa S in anticipo attraverso una funzione R che utilizzerà la funzione B, questo processo si chiama registrazione della funzione di callback, e R si chiama funzione di registrazione. Web Service e RMI di Java utilizzano il meccanismo di callback per accedere ai programmi di server remoto. Di seguito, con un esempio, spieghiamo:

Il programmatore A ha scritto un programma (programma a), nel quale è stata riservata un'interfaccia di callback e il programma è stato encapsulato. Il programmatore B vuole che a chiami il suo metodo nel programma b, quindi attraverso l'interfaccia di a, chiama il metodo del suo b. Lo scopo è stato raggiunto. In C/C++, per utilizzare le funzioni di callback, la funzione chiamata deve comunicare all'interlocutore il proprio indirizzo di puntatore, ma in Java non ci sono puntatori, come si fa? Possiamo implementare la definizione di funzione di callback attraverso l'interfaccia (interface).

Supponiamo che io sia il programmatore A, ecco il mio programma a:

public class Caller
{
  public MyCallInterface mc;
  public void setCallfuc(MyCallInterface mc)
  {
    this.mc= mc;
  }
  public void call(){
    this.mc.method();
  }
}

Devo ancora definire un'interfaccia, in modo che il programmatore B possa scrivere un programma che implementi l'interfaccia secondo la mia definizione.

public interface MyCallInterface
{
  public void method();
}

Quindi, il programmatore B deve solo implementare questa interfaccia per raggiungere lo scopo del callback:

public class B implements MyCallInterface
{
  public void method()
  {
    System.out.println("callback");
  }
  public static void main(String args[])
  {
    Caller call = new Caller();
    call.setCallfuc(new B());
    call.call();
  }
}

B. Sulla classe interna anonima

Per comprendere cosa sono le classi interne, il loro ruolo, il polimorfismo in Java, e cosa sono le funzioni di callback, ci sono molte spiegazioni dettagliate online. Per semplificare, ho fatto solo una spiegazione basilare. Le classi interne anonime vengono passate come parametri a un metodo, dove viene accettato un tipo di interfaccia per la classe interna passata, quindi viene chiamato il suo metodo, che è un esempio di polimorfismo. In realtà, ciò si basa sull'implementazione di un callback, poiché chiama i metodi della tua classe interna anonima. Di seguito c'è un esempio di codice scritto a mano senza test, solo per illustrare.

interface InterfaceA{
   String go();
}
class Test(){}
   public void prtGo(InterfaceA ia){
     System.out.println(ia.o());
   }
  public static void main(String []args){
     Test t = new Test();
     t.prtGo(new InterfaceA(){
       public String go(){
         return"go";
       }
     });
   }
}

Leggi di più sui contenuti relativi a Android interessanti sui nostri argomenti speciali: 'Guida all'ingresso e all'avanzamento nello sviluppo Android', 'Concetti di debug e soluzioni di problemi comuni in Android', 'Concetti di operazioni multimediali in Android (audio, video, registrazione, ecc.)', 'Sommarizzazione dell'uso dei componenti di base in Android', 'Sommarizzazione delle tecniche di View in Android', 'Sommarizzazione delle tecniche di layout in Android' e 'Sommarizzazione dell'uso dei controlli in Android'.

Spero che il contenuto di questo articolo possa essere utile per la progettazione di applicazioni Android di tutti.

Dichiarazione: il contenuto di questo articolo è stato tratto da Internet, il copyright è della proprietà del rispettivo autore, il contenuto è stato contribuito e caricato volontariamente dagli utenti di Internet, questo sito non detiene il diritto di proprietà, non è stato editato manualmente e non assume alcuna responsabilità legale. Se trovi contenuti sospetti di violazione del copyright, ti preghiamo di inviare una e-mail a notice#oldtoolbag.com (sostituisci # con @) per segnalare il problema, fornendo prove pertinenti. Una volta verificata, questo sito eliminerà immediatamente i contenuti sospetti di violazione del copyright.

Ti potrebbe interessare