Java: Fragen zur Klonmethode

8

Ich habe diese in einem Interview gefragt.

  
  1. Müssen wir in einer gleichzeitigen Umgebung auf die Klonmethode achten? Können wir die Klonmethode synchronisieren?

  2.   
  3. Macht es Sinn, die clone-Methode in Singleton-Klassen zu verwenden?

  4.   

Ich hatte dafür während des Interviews keine überzeugenden Antworten.

    
user2434 09.02.2012, 02:34
quelle

2 Antworten

2
  1. Wahrscheinlich ja 99,99% der Fälle, aber Sie müssen sich einfach wie jede andere Methode Ihrer Klasse an Klone erinnern und diese bei Bedarf in Abhängigkeit von Ihrem spezifischen Kontext synchronisieren. Es ist nichts falsch daran, eine Methode zu synchronisieren, die in ihrer Basisklasse nicht synchronisiert ist. Auf der anderen Seite ist das Synchronisieren einer Methode beim Überschreiben einer synchronisierten Methode wahrscheinlich ein Fehler , selbst wenn der Code korrekt kompiliert wird und keine Warnungen ausgegeben werden ...

  2. Eine überzeugende Antwort wäre wahrscheinlich NEIN mit ein paar Wörtern auf dem Singleton-Designmuster.

Gevorg 09.02.2012 03:25
quelle
1
  1. Wenn Sie ein Objekt klonen, das in anderen Threads geändert werden kann, müssen Sie wahrscheinlich eine Art von [read] -Sperre anfordern, so als würden Sie eine andere Operation ausführen. Theoretisch würden Sie eine Sperre für das neue Objekt benötigen, wenn es jemals einer unsicheren Veröffentlichung unterzogen werden könnte (ich schlage vor, veränderbares Objekt nicht unsicher zu veröffentlichen!).

  2. Es wäre kein Singleton, wenn Sie eine andere Instanz davon machen könnten (es gibt das Monostat-Antipattern, das wie das Singleton-Antipattern ist, nur schlimmer und kann mehrere Objekte für keinen klaren Zweck beinhalten). Ich nehme an, wenn Sie eine Klasse subklassieren, die Cloneable implementiert hat, möchten Sie clone überschreiben und CloneNotSupportedException ist entweder möglich oder geben Sie this zurück.

Tom Hawtin - tackline 09.02.2012 02:42
quelle

Tags und Links