Un Objet qui hérite de deux classe et implémente une interface
Tanboula
Messages postés
3
Date d'inscription
Statut
Membre
Dernière intervention
-
Tanboula Messages postés 3 Date d'inscription Statut Membre Dernière intervention -
Tanboula Messages postés 3 Date d'inscription Statut Membre Dernière intervention -
Bonjour, s'il vous plait comment faire pour rendre ce code fonctionnel en java 1.3
ma solution :
mais mon superviseur m'a dit que c'est faut par ce que c'est l'objet qui hérite et pas la classe D.
public class MultipleBounds{
class A { /* ... */ }
interface B { /* ... */ }
interface C { /* ... */ }
class D <T extends A & B & C> { /* ... */ }
}
ma solution :
public class MultipleBounds{
class A { /* ... */ }
interface B { /* ... */ }
interface C { /* ... */ }
class D extends A implements B,C { /* ... */ }
}
mais mon superviseur m'a dit que c'est faut par ce que c'est l'objet qui hérite et pas la classe D.
A voir également:
- Un Objet qui hérite de deux classe et implémente une interface
- Nombre de jours entre deux dates excel - Guide
- Deux ecran pc - Guide
- Comment faire deux colonnes sur word - Guide
- Deux whatsapp sur un téléphone - Guide
- Vente objet occasion entre particulier - Guide
1 réponse
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
Tanboula
Messages postés
3
Date d'inscription
Statut
Membre
Dernière intervention
Merci