Derzeit implementiere ich die Multimap-Klasse, um Duplikate mit Multisets zu ermöglichen. Insbesondere arbeite ich an der boolean putAll(Multimap<? extends K, ? extends V> multimap)
Methode.Guava: Ist es zulässig, eine Multimap auf allgemeine Supertypen zu übertragen?
Ich möchte, dies zu tun:
Map<K, Collection<V>> map = ((Multimap<K, V>)multimap).asMap();
wo asMap()
würde normalerweise eine Map<? extends K, Collection<? extends V>>
zurück.
Ist das gültig (wirft keine Fehler, vorausgesetzt, ich füge nicht zur Karte hinzu)? Wenn nicht, wie kann ich das beheben?
Warum möchten Sie das tun? Das Argument für 'putAll' wird schreibgeschützt verwendet, also'? ausgedehnt "ist, was Sie wollen. –
@PaulBoddington Ich möchte das 'asMap()' -Objekt daraus erhalten. Allerdings mache ich mir Sorgen, dass diese Methode eine ClassCastException auslösen würde, wenn ich diese Methode aufrufen und versuchen würde, eine 'Map> zu erhalten. Ich weiß aber nicht viel darüber und mein Gehirn brennt ein wenig. –
aspaltv
Sie erhalten keine 'ClassCastException', weil die Typen gelöscht werden. Sie können einfach 'Map> map = multimap.asMap(); '. –