[JAVA] Wirklich beängstigende ClassCastException

Schnittstelle der zu testenden Methode


public class Foo {
    public void process(List<String> arg0) {
        /*Siehe unten*/
    }
}

Entsprechender Testcode von mir geschrieben


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

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

Dies fällt aus irgendeinem Grund mit einer "ClassCastException" zusammen. Ich war überrascht, die zu testende Quelle zu sehen.

Warum hast du dich die Mühe gemacht zu besetzen?


public void process(List<String> arg0) {
    //↓ Keine Kompilierungswarnung!
    List<String> ls = (ArrayList) arg0;

    //Folgendes wird weggelassen
}

Es war ein schrecklicher Code, der nicht einmal eine Kompilierungswarnung gab ...

Es fiel nicht dahin, wo es natürlich war. (Ich sage nicht, dass es gut ist, weil es nicht fällt)

Testcode von einem Neuling geschrieben


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

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

Recommended Posts

Wirklich beängstigende ClassCastException
Wirklich beängstigende (Java Anti-Pattern) Geschichte
[Java] Die Geschichte einer wirklich beängstigenden switch-Anweisung