EnumSet'in tüm verimliliğine sahip olmak ve birisinin onu değiştireceğinden endişe etmeden aktarmak istiyorum.Java 7'de ImmutableEnumSet için planlar var mı?
cevap
Google koleksiyonları (Guava) ile değişmez bir EnumSet alabilirsiniz.
Kaynaklar:
ile ilgili sorun nedir EnumSet
?
Gerçek, orijinal EnumSet
hala değiştirilebilir, ancak orijinal başvuruyu attığınız sürece, sarıcı içinde değiştirilemez.
düzenleme: Tamam, üzerinde herhangi bir örnek yöntemleri sunmak ve Set
arayüzüne yukarıda, bu çözümü kullanmayan tek nedeni EnumSet
tip belgeler amaçlar için yararlı olduğunu, ve ne zaman o kaybetmez EnumSet
beri Set
'da sarmak. Bunun dışında, EnumSet
davranışı korunacaktır.
Bu bir 'EnumSet' –
@Colin tüm yöntemi yok hangi yöntemleri olur o olabilir mi? Sarma işleminden önce enumset'i oluşturmak için statik yöntemleri kullanmaya devam edebilirsiniz ve diğer setlerin de içermediği enumset'te yeni örnek yöntemleri göremiyorum. –
@skaffman. Sanırım çoğunlukla belgeleme amaçlı istiyorum. EnumSet ile ilgili olan şey, belirli bir yineleme sırasını belirlemesidir ve eğer 'Set' yerine 'EnumSet'i kullanırsanız, beklediğinizden farklı sonuçlar üretebilir: Birisi yöntem imzasında 'Set'i görür ve' HashSet' içinde geçer Örneğin. Bu gereklilik olmadan öneriniz iyi olurdu. BTW, EnumSet'in bazı yöntemleri (sadece yapıcılar) yoktur, ancak bazı durumlarda 'ilk ',' son 've' tersiyer 'olması gerçekten güzel olurdu. –
Guava müthiş bir kütüphane olacak. Bu taş! +1 –
"Sets.immutableEnumSet", yalnızca "ImmutableSet" değil, genel bir "ImmutableEnumSet" sınıfı döndürürse kabul ederdi. Yine de bunu yapmak için istekte bulunmaya çalışacağım. –
Bu public ImmutableEnumSet türünde ne gibi yararları görüyorsunuz, merak ediyorum? –