Ich verwende den folgenden Code, um zu überprüfen, ob ein Schlüssel in einer Map
-Instanz existiert:
Meine Frage ist:
Gibt es eine Utility oder Map
Implementierung, um den obigen Code zu vereinfachen, wie zum Beispiel:
Mein Ziel ist: Wenn key
in der Map nicht existiert, löst die Map-Implementierung eine Exception mit der übergebenen Zeichenfolge aus.
Ich weiß nicht, ob mein Wunsch vernünftig ist oder nicht?
(Tut mir leid, wenn ich die falsche Terminologie oder Grammatik verwende, ich lerne immer noch die englische Sprache.)
Sie können einen Blick in die Konfigurationskarte von apache commons hier . Es implementiert nicht Map
, hat aber eine ähnliche Schnittstelle mit einigen Helper-Methoden wie getString
, getStringArray
, getShort
und so weiter.
Bei dieser Implementierung könnten Sie die Methode setThrowExceptionOnMissing(boolean throwExceptionOnMissing)
verwenden und sie abfangen und so handhaben, wie Sie möchten.
Ist nicht genau mit einer konfigurierbaren Nachricht, aber aus meiner Sicht ist es nicht sinnvoll, eine feste Ausnahme nur mit einer benutzerdefinierten Nachricht zu werfen, da der Ausnahmetyp selbst von dem Kontext abhängt, in dem die Methode get
aufgerufen wird . Zum Beispiel, wenn Sie ein get von einem Benutzer die Ausnahme wäre etwas damit, vielleicht UserNotFoundException
, und nicht nur ein RuntimeException
mit der Nachricht: Benutzer nicht in der Karte gefunden!
In Java 8 können Sie computeIfAbsent
von Map
, wie folgt:
Eine solche Methode existiert für eine Map in Java nicht. Sie können es erstellen, indem Sie natürlich die Map-Klasse erweitern oder eine Wrapper-Klasse erstellen, die die Map und eine tryGet
-Methode enthält.
C # hat jedoch eine solche Methode: Directory.TryGetValue()
Tags und Links java dictionary hashmap