No ClassCastException beim Umwandeln in einen generischen Typ, der sich von der tatsächlichen Klasse unterscheidet [duplicate]
Diese Frage hat hier bereits eine Antwort:
Casting to generic type in Java löst keine ClassCastException aus? 5 AntwortenIch habe einen Code, der ungefähr so aussieht (Teil eines negativen Tests der Methodeget
):
import java.util.*;
public class Test {
Map<String, Object> map = new HashMap<>();
public static void main (String ... args) {
Test test = new Test();
test.put("test", "value"); // Store a String
System.out.println("Test: " + test.get("test", Double.class)); // Retrieve it as a Double
}
public <T> T get(String key, Class<T> clazz) {
return (T) map.get(key);
}
public void put(String key, Object value) {
map.put(key, value);
}
}
Ich habe erwartet, dass es ein @ wirClassCastException
aber es wird erfolgreich gedruckt:
Test: value
Warum wirft es nicht?