Hallo,
ich habe zwei Fragen zu HashMaps:
1. Wie mache ich eine HashMap immutable?
Die Methode HttpServletRequest.getParameterMap() liefert mir laut Doku eine immutable Map zurück.
Google sagt mir dazu, das ich, um ein immutable Object zu erzeugen, alle Attribute dieser Klasse final sein müssen.
Aber wie kann das sein?
Wenn ich mir mit new() eine HashMap erzeuge ist die ja auch nicht immutable.....
2. Warum sollte man jemals die Methode clone() von HashMap einsetzen?
Die Api-Doc sagt:
Wenn ich eh nur eine shallow copy kriege, kann ich doch auch einfach sowas machen wie:
was dann exakt das gleiche ist wie:
oder?
Edit:
Und noch was verstehe ich nicht, warum darf ich das
machen, das
jedoch nicht?
Danke für alle Antworten!
ich habe zwei Fragen zu HashMaps:
1. Wie mache ich eine HashMap immutable?
Die Methode HttpServletRequest.getParameterMap() liefert mir laut Doku eine immutable Map zurück.
Google sagt mir dazu, das ich, um ein immutable Object zu erzeugen, alle Attribute dieser Klasse final sein müssen.
Aber wie kann das sein?
Wenn ich mir mit new() eine HashMap erzeuge ist die ja auch nicht immutable.....
2. Warum sollte man jemals die Methode clone() von HashMap einsetzen?
Die Api-Doc sagt:
Object clone()
Returns a shallow copy of this HashMap instance: the keys and values themselves are not cloned.
Wenn ich eh nur eine shallow copy kriege, kann ich doch auch einfach sowas machen wie:
Code:
HashMap foo= new HashMap();
HashMap bar = foo;
was dann exakt das gleiche ist wie:
Code:
HashMap foo= new HashMap();
HashMap bar = foo.clone();
oder?
Edit:
Und noch was verstehe ich nicht, warum darf ich das
Code:
final HashMap foo = new HashMap();
foo.put("foo", "bar");
foo.put("bar", "foo");
machen, das
Code:
final String hello = "hello";
hello = "world";
jedoch nicht?
Danke für alle Antworten!