IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Android Discussion :

"Instanciation" d'une interface ?


Sujet :

Android

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    66
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 66
    Points : 45
    Points
    45
    Par défaut "Instanciation" d'une interface ?
    Bonjour,

    Je lis dans la documentation officielle Android concernant l'objet Button (cf. le lien en bas de ce message) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    public class MyActivity extends Activity {
         protected void onCreate(Bundle savedInstanceState) {
             super.onCreate(savedInstanceState);
    
             setContentView(R.layout.content_layout_id);
    
             final Button button = findViewById(R.id.button_id);
             button.setOnClickListener(new View.OnClickListener() {
                 public void onClick(View v) {
                     // Code here executes on main thread after user presses button
                 }
             });
         }
     }
    
    The above snippet creates an instance of View.OnClickListener and wires the listener to the button using setOnClickListener(View.OnClickListener)
    Si je vais dans cette même documentation sur View.OnClickListener, je trouve :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    View.OnClickListener
    public static interface View.OnClickListener
    Or - à moins que quelque-chose m'ait échappé - j'en suis resté au fait qu'une interface ne s'instanciait pas...

    Si quelqu'un pouvait éclairer ma lanterne, ce serait vraiment cool !

    Merci d'avance...

    Source : https://developer.android.com/refere...et/Button.html

  2. #2
    Membre expérimenté

    Homme Profil pro
    Senior Développeur JEE
    Inscrit en
    Avril 2002
    Messages
    795
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : Belgique

    Informations professionnelles :
    Activité : Senior Développeur JEE
    Secteur : Finance

    Informations forums :
    Inscription : Avril 2002
    Messages : 795
    Points : 1 660
    Points
    1 660
    Par défaut
    En fait le compilateur va créer ce qu'on appelle une classe 'anonyme'.

    https://docs.oracle.com/javase/tutor...usclasses.html

  3. #3
    Modérateur

    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    12 567
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 567
    Points : 21 635
    Points
    21 635
    Par défaut
    Certes une interface ne peut pas être instanciée...

    Mais les classes concrètes qui l'implémentent, si. C'est un peu le principe -_-°

  4. #4
    Membre du Club
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    66
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 66
    Points : 45
    Points
    45
    Par défaut
    Merci à tous les deux pour votre réponse rapide !

    Mais les classes concrètes qui l'implémentent, si.
    J'essaie de le dire avec mes mots :

    le système :

    - crée une classe "bidon" sans nom (anonyme) qui ne fait qu'implémenter l'interface OnClickListener
    - instancie cette classe, ce qui a pour effet de rendre la méthode abstraite onClick (définie dans l'interface) exécutable

    C'est ça ?

    Merci encore !

  5. #5
    Expert confirmé
    Avatar de Hephaistos007
    Profil pro
    Enseignant Chercheur
    Inscrit en
    Décembre 2004
    Messages
    2 493
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Enseignant Chercheur
    Secteur : Enseignement

    Informations forums :
    Inscription : Décembre 2004
    Messages : 2 493
    Points : 4 166
    Points
    4 166
    Par défaut
    Citation Envoyé par Drooxy Voir le message
    J'essaie de le dire avec mes mots :

    le système :

    - crée une classe "bidon" sans nom (anonyme) qui ne fait qu'implémenter l'interface OnClickListener
    - instancie cette classe, ce qui a pour effet de rendre la méthode abstraite onClick (définie dans l'interface) exécutable

    C'est ça ?
    Tout à fait.

  6. #6
    Membre du Club
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    66
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 66
    Points : 45
    Points
    45
    Par défaut
    Super !

    Merci...

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo