Un Objet qui hérite de deux classe et implémente une interface
Tanboula
Messages postés
4
Statut
Membre
-
Tanboula Messages postés 4 Statut Membre -
Tanboula Messages postés 4 Statut Membre -
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
- Un ecouteur sur deux marche ✓ - Forum Audio
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
4
Statut
Membre
Merci