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

Analyse de l'utilisation des classes internes anonymes et des fonctions de rappel en programmation Android

L'exemple de ce document décrit l'utilisation des classes internes anonymes et des fonctions de rappel dans la programmation Android. Partageons-le avec vous pour que vous puissiez le consulter, voici les détails :

Dans le développement Android, nous utilisons souvent des classes internes anonymes et leurs fonctions de rappel, par exemple, lorsque nous configurons un écouteur d'événement pour un bouton, nous devons généralement implémenter l'interface OnCLickListener et redéfinir la méthode Onclick(), c'est ce que sont les classes internes anonymes et les fonctions de rappel, alors combien comprenez-vous les classes internes anonymes et les fonctions de rappel en Java ? Ce document fournit une explication détaillée.

Tout d'abord, il faut savoir que les classes internes sont une partie principale de la langue Java. Les classes internes peuvent presque être placées à n'importe quel endroit dans une classe, peuvent être au même niveau que les variables d'instance, ou à l'intérieur d'une méthode, même une partie d'une expression. Les classes internes de Java sont divisées en classes membres, classes locales et classes anonymes, nous allons parler des classes anonymes.

A. À propos des fonctions de rappel

Les classes internes anonymes utilisent des fonctions de rappel, qu'est-ce que la fonction de rappel ?

Le rappel, c'est que le programme client C appelle une fonction A dans le programme de service S, puis S appelle à son tour une fonction B dans C, pour C, cette B est appelée la fonction de rappel. Par exemple Win32La fonction de processus de fenêtre en bas est une fonction de rappel typique. En règle générale, C ne s'appelle pas B lui-même, l'objectif de C de fournir B est de permettre à S de le faire, et c'est quelque chose que C doit fournir. Comme S ne connaît pas le nom et le prénom de B fourni par C, S conclut une norme d'interface (prototype de fonction) pour B, puis C prévient S à l'avance via une fonction R que B fonction sera utilisé, ce processus est appelé l'enregistrement de la fonction de rappel, et R est appelé la fonction d'enregistrement. Web Service et RMI de Java utilisent le mécanisme de rappel pour accéder aux programmes de serveurs distants. Voici un exemple pour illustrer:

Le programmeur A a écrit un programme (programme a), dans lequel il laisse une interface de fonction de rappel et encapsule le programme. Le programmeur B veut que a appelle sa méthode dans le programme b, donc il appelle la méthode de b via l'interface dans a. L'objectif est atteint. Dans C/C++Dans celui-ci, il faut utiliser la fonction de rappel, la fonction de rappel doit indiquer à l'appelant l'adresse de son pointeur, mais en JAVA il n'y a pas de pointeur, que faire ? Nous pouvons réaliser la définition de la fonction de rappel par l'intermédiaire de l'interface (interface).

Supposons que je sois le programmeur A, voici mon programme a :

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

Je dois également définir une interface afin que le programmeur B puisse écrire un programme pour implémenter l'interface selon ma définition.

public interface MyCallInterface
{
  public void method();
}

Ainsi, le programmeur B n'a besoin que d'implémenter cette interface pour atteindre l'objectif du rappel :

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

B. À propos de la classe interne anonyme

Pour comprendre ce qu'est une classe interne, le rôle de la classe interne, la polymorphisme en Java, et ce qu'est une fonction de rappel. Il y a beaucoup d'explications détaillées sur Internet, mais pour simplifier, nous ne faisons qu'une explication simple. La classe interne anonyme est transmise en tant que paramètre de fonction à la méthode, dans cette méthode, l'interface type est utilisée pour accepter la classe anonyme transmise, puis appeler sa méthode, c'est la polymorphisme. Le principe est en fait l'implémentation du rappel. Parce qu'il appelle la méthode de votre classe interne anonyme. Le code suivant est tapé à la main et n'a pas été testé, juste pour illustrer.

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";
       }
     });
   }
}

Les lecteurs intéressés par d'autres contenus sur Android peuvent consulter les sujets spéciaux de notre site : "Introduction et tutoriel de développement Android", "Conseils de débogage et méthodes de résolution des problèmes courants Android", "Résume des techniques d'exploitation multimédia Android (audio, vidéo, enregistrement, etc.), "Résume des utilisations des composants de base Android", "Résume des techniques des vues View Android", "Résume des techniques de mise en page layout Android" et "Résume des utilisations des contrôles Android"

J'espère que l'article ci-dessus vous sera utile pour la conception de programmes Android.

Déclaration : le contenu de cet article est hébergé sur Internet, propriété des auteurs respectifs, le contenu est contribué et téléversé par les utilisateurs d'Internet, le site Web ne détient pas de droits de propriété, n'a pas été traité par l'éditeur humain et n'assume pas de responsabilité juridique pertinente. Si vous trouvez du contenu suspect de violation de droits d'auteur, veuillez envoyer un e-mail à : notice#oldtoolbag.com (veuillez remplacer # par @ lors de l'envoi d'un e-mail pour signaler une violation, et fournir des preuves pertinentes. Une fois vérifié, le site supprimera immédiatement le contenu suspect de violation de droits d'auteur.

Vous pourriez aussi aimer