Ich möchte eine Methode haben, die den erforderlichen Typ von Objekten zurückgibt, die aus einer Map extrahiert wurden. Hier ist ein BeispielWie generische List-Klasse als Argument an die generische Methode in Java übergeben?
Map<String,Object> map = new HashMap<>();
map.put("ids", Arrays.asList(5,345,45645));
map.put("id", 325);
<T> T get(String arg, Class<T> clazz) {
return (T) map.get(arg);
}
Dann kann beispielsweise Integer mit diesem Code erhalten werden
Integer id = get("id", Integer.class);
Aber wenn ich versuche, eine Liste der Objekte auf diese Weise zu erhalten
List<Integer> ids = get("ids", new ArrayList<Integer>().getClass());
List<Integer> ids = get("id", List.class);
IntelliJ IDEA warnt: Unchecked assignment: 'java.util.ArrayList' to 'java.util.List<java.lang.Integer>'
ich erwartete somethi ng wie List<Integer>.class
(analog zu Integer.class
, Boolean.class
etc ...), was würde als
List<Integer> ids = get("ids", List<Integer>.class`)
verwendet werden, aber dies kompiliert wird nicht.
Also gibt es eine Lösung?