La méthode suivante génère un avertissement, mais il semble sûr pour moi. Je suis sûr que le problème est avec moi:Pourquoi cette méthode générique est-elle dangereuse?
public <S extends CharSequence> S foo(S s) {
return (S) new StringBuilder(s);
}
On dirait que cela reviendra toujours l'argument s
. Quelqu'un peut-il montrer un exemple qui provoquerait cette méthode à lancer une exception?
Modifier: Je ne suis pas particulièrement intéressé par la question de savoir si les génériques sont nécessaires ici. Au contraire, je cherche une démonstration de la façon dont cette méthode est dangereuse.
Répondant à l'insécurité, la réponse de skaffman l'explique bien, comme le font autres: la distribution (S) (après le mot-clé return) échouera si vous transmettez une chaîne en tant que paramètre, car elle ne peut pas convertir StringBuilder en chaîne. – KLE