Vermeiden Sie eine ungeprüfte Zuordnung in einer Karte mit mehreren Werttypen?

Ich habe Probleme mit einer Warnung in Java 7:

Unchecked assignment: 'java.lang.Class' to 'java.lang.Class<T>'

Ich bekomme es auf die LinieClass<T> type = typeMap.get(key); in der get-Funktion unten.

Grundsätzlich versuche ich hier, eine Reihe von Schlüssel / Wert-Paaren unbekannter Typen zu speichern (aber alle sind Nachkommen von Object mit Ausnahme von null), aber den Typ nicht zu verlieren. Also habe ich eine Klasse mit den folgenden Inhalten unter Verwendung von Generika erstellt. Es verfügt über zwei Zuordnungen (eine zum Speichern der Daten und eine zum Speichern des Klassentyps:

    private Map<String, Object>  dataMap = new HashMap<>();
    private Map<String, Class> typeMap = new HashMap<>();

    public  <T> void put(String key, T instance){
        dataMap.put(key, instance);
        if (instance == null){
            typeMap.put(key,null);
        }
        else {
            typeMap.put(key, instance.getClass());
        }
    }

    public <T> T get(String key){
        Class<T> type = typeMap.get(key);
        if (type == null){
            return null;
        }
        return type.cast(dataMap.get(key));
    }

Es läuft gut, aber die Warnung nervt mich. Gibt es eine Möglichkeit, Java dazu zu bringen, diese Besetzung zu machen, ohne sich zu beschweren (außer sie zu unterdrücken)? Oder gibt es einen besseren Weg, um das zu erreichen, was ich versuche? Wie wäre es mit Java 8, da ich noch keine Chance hatte, mich darauf einzulassen?

Vielen Dank!

Antworten auf die Frage(2)

Ihre Antwort auf die Frage