Sie können map?
verwenden zu überprüfen, ob etwas IPersistentMap
implementiert, die für Clojure Karten wahr ist, aber nicht für java.utils.*
Karten:
(map? (java.util.HashMap.)) ;; => false
(map? (java.util.LinkedHashMap.)) ;; => false
(map? {}) ;; => true
Um genauer zu sein, sollten Sie lieber prüfen, ob ein bestimmtes Objekt einige Anforderungen erfüllt (zB ist hartnäckig, unveränderlich/veränderbar - map?
wird diese spezifische Frage beantworten). Es gibt keine einfache Möglichkeit zu sagen, ob Sie eine Java-Implementierung einer Map erhalten haben, da Sie eine andere Implementierung aus einer externen Bibliothek mit einer benutzerdefinierten Implementierung von java.util.Map
erhalten oder eine der konkreten Implementierungen aus dem Paket java.util
erweitern können.
Haben Sie versucht, 'type' zu verwenden? – jmargolisvt