On s'interdit d'utiliser la genericite et on desire ecrire une methode statique generale (a defaut d'etre
generique) pour pouvoir agrandir un tableau. Par exemple, si T est un tableau d'entiers de taille 5, on
veut que Tableau.agrandir(T,10,100) retourne un tableau de taille 10 dont les 5 premieres cases
contiennent les 5 premiers elements de T et dont toutes les autres cases contiennent 100. Le nouveau
tableau doit avoir des elements du meme type que le tableau intial (et non pas le type Object). Ainsi,
si on execute la methode main de la classe suivante :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
| public class Tableau {
public static Object[] agrandir(Object[] tab, int taille, Object init) {
...
}
public static void main(String[] args) {
Integer[] t1 = { 0,1,2,3,4 };
String[] t2 = { "aa", "bb", "cc" };
Integer[] tt1 = (Integer[]) Tableau.agrandir(t1, 10, 100);
String[] tt2 = (String[]) Tableau.agrandir(t2, 5, "vide");
for ( Integer i : tt1 )
System.out.print(i + " ");
System.out.println();
for ( String s : tt2 )
System.out.print(s + " ");
System.out.println();
}
} |
on veut obtenir le resultat suivant :
0 1 2 3 4 100 100 100 100 100 100
aa bb cc vide vide
1
Verifiez que l'implementation triviale de agrandir (dans la classe TableauFaux fournie) ne marche
pas. Ecrivez la bonne version de agrandir dans la classe Tableau en utilisant, entre autre, la classe
java.lang.reflect.Array. Completez enfin la classe TableauGenerique, solution generique (sans
introspection) au probleme pose.
Partager