2017-01-19 3 views
1

Lets betrachten, dass wir erstellen eine Sammlung sie Karte sagen:Wie können wir wissen, dass eine Methode angewendet wird?

Map<Integer, Integer> map = new HashMap<Integer, Integer>(); 
map.put(10,20); 

Jetzt in Beispiel haben wir bekommen „Karte“ Objekt und Methode „put“, die ein Paar auf unsere Karte hinzugefügt. Aber die Frage, die mich quält, ist, wie kann ich wissen, dass diese Methode "put" funktioniert und ich neue Aufnahme ohne Codeausführung habe, d. H. Ohne Lauftest.

+1

Sie meinen, wie können Sie wissen, dass "Put" tatsächlich den Eintrag in Ihrer Karte "Put"? Ich würde darauf zählen. – Idos

+0

Sie können die Size-Methode verwenden, um zu überprüfen, ob das neue Element hinzugefügt wurde, nicht sicher, wie Sie es tun könnten, ohne mehr Code zu schreiben. Sie könnten es debuggen und einen Haltepunkt haben und die HashMap im Speicher überprüfen, um den Inhalt zu sehen . – dahui

+0

Ja, das würde ich gerne wissen. - Idos –

Antwort

3

Wenn Sie einen Blick auf Map::put() API nehmen, werden Sie sehen:

Würfe:
UnsupportedOperationException - wenn der Put-Betrieb wird durch diese Karte unterstützt
ClassCastException - wenn die Klasse des angegebenen Schlüssel oder Wert verhindert, dass es in dieser Map gespeichert wird
NullPointerException - wenn der angegebene Schlüssel oder Wert null ist und diese Zuordnung keine Nullschlüssel oder Werte
zulässt- wenn einige Eigenschaft des angegebenen Schlüssel oder Wert verhindert, dass es in dieser Karte

und

Returns die mit Schlüssel oder null, wenn es
war assoziiert vorherigen Wert gespeichert werden Keine Zuordnung für Schlüssel. (A null Rückkehr kann auch bedeuten, dass die Karte vorher null zugeordnet Schlüssel, wenn die Umsetzung Nullwerte unterstützt.)

mit So ein try-catch und die Rückkehr Wert können Sie den Erfolg der put Aktion gewährleisten.


Aber, wenn Sie ganz sicher sein wollen, können Sie eine Map-Implementierung (in diesem Fall HashMap) außer Kraft setzen und Ihre Geschäftslogik erstellen.

In diesem Fall verwenden put und eine boolean Rückkehr und trowing keine Exception (oder sie in der Art und Weise der Handhabung Sie möchten).

public class MyHashMap<K, V> extends HashMap { 
    @Override 
    public Boolean put(Object key, Object value) { 
     try { 
      super.put(key, value); 
     } catch (UnsupportedOperationException | ClassCastException | NullPointerException | IllegalArgumentException e) { 
      return false; // or do what you want! 
     } 
     return true; 
    } 
} 

Und später VERWENDEN SIE ES!:

Map<Integer, Integer> myMap = new MyHashMap(); 

// printing result 
System.out.println(myMap.put(10,20)); 

// set result to a variable 
boolean result = myMap.put(null,null); // result = true 

// or even setting and evaluating 
if (myMap.put(10,20)) { 
    // success action 
} else { 
    // fail action 
} 

HINWEIS: ist dies eine Java-Implementierung 8

0

Wenn mit Standard-Java-Funktionen tun haben, können Sie ihre API lesen. Zum Beispiel map.put(K, V). Wenn etwas schief geht, wird eine Ausnahme ausgelöst - und Sie müssen es fangen und herausfinden, was schief gelaufen ist.

Verwandte Themen