Ich habe eine Klasse, die wie folgt aussieht.Klonen von Set-Schnittstelle
Ich möchte den Klon des Satzes durch den Getter und nicht den Verweis auf den Satz selbst zurückgeben. Da set eine Schnittstelle ist, gibt es keine Klonmethode.
class User{
public static void main(String[] args){
HashSet<String> hs=new HashSet<String>();
hs.add("str1");
hs.add("str2");
ClassName cn=new ClassName(hs);
HashSet<String> newHS=cn.getSet();
newHS.add("str3");
}
}
Wenn ich Bezug auf den Satz zurückzukehren selbst, dann ist die Methode, um die Set bekommen könnte aus dem Set hinzufügen oder löschen, die wie in den obigen Klasse Benutzern nicht günstig ist. Kann jemand vorschlagen, das Set zu klonen?
Der Grund für die Verwendung eines Sets und nicht eines HashSet oder TreeSet ist, weil dies den ClassName wiederverwendbar machen würde, da ich den ClassName nicht ändern muss, wenn ich in Zukunft eine andere Art eines Sets verwenden möchte.
'.clone()' ist in Java gebrochen, war immer schon immer, Sie wollen nie '.clone()' verwenden. Es scheint, dass Sie wirklich nur eine 'ImmutableSet'-Ansicht des Backing-Sets wünschen. –