Tôi muốn có tất cả hiệu quả của EnumSet và vượt qua nó mà không lo lắng rằng ai đó sẽ sửa đổi nó.Có kế hoạch cho ImmutableEnumSet trong Java 7 không?
Trả lời
Bạn có thể nhận được EnumSet bất biến với bộ sưu tập của Google (Guava).
Resources:
Có gì sai với Collections.unmodifiableSet()
gói EnumSet
?
Đúng, bản gốc EnumSet
vẫn có thể thay đổi, nhưng miễn là bạn hủy tham chiếu ban đầu, nó tốt như không thay đổi bên trong trình bao bọc.
chỉnh sửa: OK, vì EnumSet
không cung cấp bất kỳ phương pháp dụ trên và phía trên giao diện Set
, lý do duy nhất vì đã không sử dụng giải pháp này là các loại EnumSet
rất hữu ích cho các mục đích tài liệu, và bạn mất rằng khi gói nó trong một Set
. Ngoài ra, hành vi EnumSet
sẽ được giữ nguyên.
Nó không có tất cả các phương pháp của một 'EnumSet' –
@Colin gì phương pháp sẽ là được? Bạn vẫn có thể sử dụng các phương thức tĩnh để tạo enumset trước khi gói nó, và tôi không thấy bất kỳ phương thức thể hiện mới nào trong enumset mà các bộ khác không có. –
@skaffman. Tôi nghĩ rằng tôi muốn nó chủ yếu cho mục đích tài liệu. Điều về EnumSet là nó chỉ định một thứ tự lặp nhất định, và nếu bạn sử dụng 'Set' thay cho' EnumSet', nó có thể tạo ra các kết quả khác nhau hơn bạn mong đợi: ai đó nhìn thấy 'Set' trong chữ ký phương thức và chuyển vào' HashSet' ví dụ. Nếu không có yêu cầu này, đề xuất của bạn sẽ ổn. BTW, 'EnumSet' không có phương thức bổ sung (chỉ là các hàm tạo), mặc dù nó sẽ thực sự tốt khi có' first', 'last' và' reverseIterator' trong một số trường hợp. –
- 1. Java - Lập kế hoạch cho một công việc hàng ngày
- 2. Thư viện lập kế hoạch phân phối có mục đích chung cho Java
- 3. Lập kế hoạch Java: Quartz vs Khác? (ví dụ: Obsidian)
- 4. Lập kế hoạch năm trong R
- 5. Có rất nhiều kế hoạch phát triển 9 không?
- 6. Kế hoạch heroku có bao nhiêu không gian đĩa?
- 7. Lập kế hoạch cạnh tranh
- 8. Kế hoạch thực hiện Oracle
- 9. MongoDB sao lưu kế hoạch
- 10. Lập kế hoạch hành trình
- 11. Kế hoạch thực hiện Maven
- 12. Kế hoạch học tập thực hành cho việc học Grails
- 13. Linux có lên kế hoạch cho một tiến trình hay một luồng không?
- 14. Có kế hoạch nào cho Django để xử lý các cơ sở dữ liệu NoSQL không?
- 15. Có kế hoạch nào cho phiên bản cửa sổ gốc của NodeJ không?
- 16. Có thể có một giai đoạn trong kế hoạch bắt đầu bằng tre mặc dù kế hoạch trước đã thất bại không?
- 17. Kế hoạch học tập cho ASP.NET MVC 3
- 18. sự khác biệt giữa kế hoạch giải thích và kế hoạch thực hiện
- 19. CDN cho khuôn khổ kế hoạch chi tiết css
- 20. Lập kế hoạch thực thi SQL caching
- 21. Có bất kỳ kế hoạch nào cho "thuộc tính mở rộng" trong phiên bản C# trong tương lai không?
- 22. Cách lập kế hoạch dự án
- 23. Lập kế hoạch và mã hóa obfuscation
- 24. hủy kế hoạch thi hành di chúc
- 25. Tomcat 7 có tương thích với Java 7 không?
- 26. Lập kế hoạch round-robin là gì?
- 27. Win32 Lập kế hoạch chủ đề
- 28. ASP.NET MVC 3 sách kế hoạch
- 29. Ví dụ về kế hoạch kiểm tra
- 30. Giải thích kế hoạch truy vấn trong thủ tục lưu
Ổi đang trở thành một thư viện tuyệt vời. Những hòn đá này! +1 –
Đã chấp nhận nó nếu 'Sets.immutableEnumSet' sẽ trả về một lớp' ImmutableEnumSet' công khai, không chỉ 'ImmutableSet'. Mặc dù tôi sẽ cố gắng yêu cầu làm như vậy. –
Lợi ích gì bạn thấy loại ImmutableEnumSet công cộng này có, tôi tự hỏi? –