Rechercher
 

Améliorations / Corrections

Vous avez des améliorations (ou des corrections) à proposer pour ce document : je vous remerçie par avance de m'en faire part, cela m'aide à améliorer le site.

Emplacement :

Description des améliorations :

Définition de méthodes génériques

Apprendre à coder une classe générique La notion de package



Accès rapide :
La vidéo
Définition de méthodes génériques sur classes normales

La vidéo

Cette vidéo vous apprend à coder des méthodes génériques sur des classes non générique. Elle vous montre aussi comment restreindre les types autorisés par la généricité.


Définition de méthodes génériques

Définition de méthodes génériques sur classes normales

Le langage Java permet de définir des méthodes génériques sur une classe qui ne l'est pas. Par exemple, on peut imaginer une méthode dont le type de retour dépend du type de l'un de ces paramètres pour produire des objets de natures diverses. Dans ce cas, il faudra utiliser la syntaxe <T> pour introduire la méthode générique (voir ligne 8 de l'exemple ci-dessous). En voici un petit exemple.

 1 
 2 
 3 
 4 
 5 
 6 
 7 
 8 
 9 
 10 
 11 
 12 
 13 
 14 
 15 
 16 
 17 
 18 
 19 
 20 
 21 
 22 
 23 
import java.lang.reflect.Constructor;
import java.util.Date;

import javax.swing.JButton;

public class Demo {
    
    public static <T> T createInstance( Class<T> metadata ) throws Exception {
        Constructor<T> constructor = metadata.getDeclaredConstructor();
        constructor.setAccessible( true );
        return constructor.newInstance();        
    }
    
    
    public static void main( String[] args ) throws Exception {
        Date date = Demo.createInstance( Date.class );
        System.out.println( date );

        JButton button = Demo.createInstance( JButton.class );
        System.out.println( button );
    }
    
}
Exemple de définition d'une méthode générique

Notez bien que dans le main, aucun cast n'est nécessaire étant donné que le type de retour de la méthode est dépendant du type du paramètre de la méthode.



Apprendre à coder une classe générique La notion de package