Un Objet qui hérite de deux classe et implémente une interface
Fermé
Tanboula
Messages postés
3
Date d'inscription
jeudi 23 janvier 2014
Statut
Membre
Dernière intervention
26 février 2014
-
23 janv. 2014 à 14:08
Tanboula Messages postés 3 Date d'inscription jeudi 23 janvier 2014 Statut Membre Dernière intervention 26 février 2014 - 24 janv. 2014 à 10:14
Tanboula Messages postés 3 Date d'inscription jeudi 23 janvier 2014 Statut Membre Dernière intervention 26 février 2014 - 24 janv. 2014 à 10:14
A voir également:
- Un Objet qui hérite de deux classe et implémente une interface
- Vente objet occasion entre particulier - Guide
- Deux ecran pc - Guide
- Identifier un objet à partir d'une photo - Guide
- Common interface 5v only - Forum TV & Vidéo
- Deux whatsapp sur un téléphone - Guide
1 réponse
KX
Messages postés
16755
Date d'inscription
samedi 31 mai 2008
Statut
Modérateur
Dernière intervention
12 février 2025
3 020
Modifié par KX le 23/01/2014 à 19:33
Modifié par KX le 23/01/2014 à 19:33
En faisant
Alors qu'en faisant
En Java 1.3 (lorsque les types paramétrés n'existaient pas encore) il aurait fallu gérer toi même la classe T, par exemple avec un objet Class comme ceci :
Du coup une méthode générique en Java 5+ comme ceci :
Devient en Java 1.3 comme cela :
La confiance n'exclut pas le contrôle
class D <T extends A & B & C>c'est T qui étend A, B, C, mais D ne fait que étendre Object.
Alors qu'en faisant
class D extends A implements B,Ctu as D qui étends de A... et plus embêtant tu n'as plus le paramètre T !
En Java 1.3 (lorsque les types paramétrés n'existaient pas encore) il aurait fallu gérer toi même la classe T, par exemple avec un objet Class comme ceci :
class D { private final Class classT; public D(Class classT) { this.classT = classT; if (classT==null) throw new InvalidParameterException("parameter class can't be null"); if (!classT.isAssignableFrom(A.class)) throw new InvalidParameterException("parameter class must extends "+A.class); if (!classT.isAssignableFrom(B.class)) throw new InvalidParameterException("parameter class must extends "+B.class); if (!classT.isAssignableFrom(C.class)) throw new InvalidParameterException("parameter class must extends "+C.class); } }
Du coup une méthode générique en Java 5+ comme ceci :
private T t; public void set(T t) { this.t = t; }
Devient en Java 1.3 comme cela :
private Object t; public void set(Object t) { this.t = t; if (t!=null && !t.getClass().isAssignableFrom(classT)) throw new InvalidParameterException("parameter must extends "+A.class+" and implements "+B.class+" and "+C.class); }
La confiance n'exclut pas le contrôle
24 janv. 2014 à 10:14