Soit la classe :
class TestSafeVarargs{ public static void main(String[] args){ System.out.println(max(12, 3, 8, 210)); } // pas besoin ici de SafeVararg car pas de type générique public static int max(int premier, int... lesAutres) { int max = premier; for(int i : lesAutres) { if (i > max) max = i; } return max; } }- Compiler cette classe et vérifier que la compilation ne génère aucun warning.
- Modifier cette classe de manière à ce que
max()
travaille sur une liste de sous-classe d'entiers :
static <T extends Integer> T max(T premier, T... lesAutres){...}- Vérifier que la compilation génère un warning ; utiliser
-Xlint:unchecked
pour avoir les détails du warning.
- Modifier la classe pour que la compilation passe sans warning.