[JAVA] ClassCastException vraiment effrayant

Interface de la méthode sous test


public class Foo {
    public void process(List<String> arg0) {
        /*Voir ci-dessous*/
    }
}

Code de test approprié écrit par moi-même


List<String> arg0 = Arrays.asList("Ah", "je", "U");

Foo foo = new Foo();
foo.process(arg0);

Cela tombe avec une ClassCastException pour une raison quelconque. J'ai été surpris de voir la source à tester.

Pourquoi as-tu pris la peine de lancer


public void process(List<String> arg0) {
    //↓ Aucun avertissement de compilation!
    List<String> ls = (ArrayList) arg0;

    //Ce qui suit est omis
}

C'était un code horrible qui ne donnait même pas d'avertissement de compilation ...

Il n'est pas tombé là où c'était naturel. (Je ne dis pas que c'est bon parce que ça ne tombe pas)

Code de test écrit par un nouveau venu


List<String> arg0 = new ArrayList<>();
arg0.add("Ah");
arg0.add("je");
arg0.add("U");

Foo foo = new Foo();
foo.process(arg0);

Recommended Posts

ClassCastException vraiment effrayant
Histoire vraiment effrayante (anti-motif Java)
[Java] L'histoire d'une déclaration de commutation vraiment effrayante