Angenommen, ich schreibe eine Methode, die eine Map zurückgeben soll . Zum Beispiel:
public Map<String, Integer> foo() {
return new HashMap<String, Integer>();
}
Nachdem ich eine Weile darüber nachgedacht habe, habe ich entschieden, dass es keinen Grund gibt, diese Karte nach ihrer Erstellung zu ändern. Daher möchte ich eine ImmutableMap zurückgeben .
public Map<String, Integer> foo() {
return ImmutableMap.of();
}
Soll ich den Rückgabetyp als generische Map belassen oder angeben, dass ich eine ImmutableMap zurückgeben möchte?
Genau aus diesem Grund wurden Schnittstellen für erstellt. um die Implementierungsdetails auszublenden.
Auf der anderen Seite könnten andere Entwickler die Tatsache übersehen, dass dieses Objekt unveränderlich ist, wenn ich es so belasse. Somit werde ich kein Hauptziel unveränderlicher Objekte erreichen; um den Code klarer zu machen, indem die Anzahl der Objekte minimiert wird, die sich ändern können. Selbst das Schlimmste ist, dass nach einer Weile jemand versucht, dieses Objekt zu ändern. Dies führt zu einem Laufzeitfehler (der Compiler warnt nicht davor).
return ImmutableMap.of(somethingElse)
. Stattdessen würden Sie das ImmutableMap.of(somethingElse)
als Feld speichern und nur dieses Feld zurückgeben. All dies beeinflusst das Design hier.