Ist diese Klasse unveränderlich?Ist diese Klasse unveränderlich?
Ich versuche grob, die Richtlinien in "Effective Java", "Punkt 15: Minimieren Mutabilität" zu folgen, daher ist die Klasse nicht absichtlich "endgültig".
public class Result<T extends Number> {
private final Map<String, T> result;
private Result(final Map<String, T> result) {
this.result = result;
}
public static final Result<? extends Number> of() {
return new Result<>(new LinkedHashMap<>());
}
/** Add or replace value. */
public Result<T> put(final String key, final T value) {
result.put(key, value);
return new Result<>(Collections.unmodifiableMap(result));
}
public T get(final String key) {
return Collections.unmodifiableMap(result).get(key);
}
@Override
public String toString() {
return result.toString();
}
}
Ich glaube nicht, weil Sie Ihre 'result' Karte mit dieser Linie' result.put (Schlüssel, Wert) geändert; ' –
Nein, der' put' Methode es modifiziert. Wenn Sie möchten, dass es unveränderlich ist, müssen Sie nur das neue "Ergebnis" anders haben, nicht das Original. Als Randnotiz wird das Aufrufen von 'put' auf ein' Result', das von einem anderen 'put' zurückgegeben wird, eine Ausnahme auslösen. – resueman
Was würde Sie glauben machen, dass es unveränderlich ist? Was glaubst du, ist die Definition von unveränderlich? –