Voglio avere tutte le efficienze di EnumSet e passarlo senza preoccuparmi che qualcuno possa modificarlo.Ci sono piani per ImmutableEnumSet in Java 7?
risposta
È possibile ottenere un EnumSet immutabile con le raccolte Google (Guava).
Risorse:
Cosa c'è che non va con Collections.unmodifiableSet()
che avvolge un EnumSet
?
Vero, l'originale EnumSet
è ancora modificabile, ma finché si elimina il riferimento originale, è altrettanto immutabile all'interno del wrapper.
edit: OK, poiché EnumSet
non offre alcuna metodi di istanza al di sopra l'interfaccia Set
, l'unico motivo per non usare questa soluzione è che il tipo EnumSet
è utile a scopo di documentazione, e si perde che quando avvolgendolo in un Set
. Oltre a questo, il comportamento EnumSet
verrà mantenuto.
Non ha tutti i metodi di un EnumSet' –
@Colin 'quali metodi vorrei che essere? Potresti ancora usare i metodi statici per creare l'enumset prima di avvolgerlo, e non vedo alcun nuovo metodo di istanza in enumset che altri set non abbiano neanche. –
@skaffman. Penso di volerlo principalmente a scopo di documentazione. La cosa su EnumSet è che specifica un certo ordine di iterazione, e se usi 'Set' al posto di' EnumSet' potrebbe produrre risultati diversi da quanto ti aspetti: qualcuno vede il 'Set' nella firma del metodo e passa in' HashSet' per esempio. Senza questo requisito il tuo suggerimento andrebbe bene. A proposito, il 'EnumSet' non ha metodi aggiuntivi (solo costruttori), anche se sarebbe davvero bello avere' first', 'last' e' reverseIterator' in alcuni casi. –
- 1. Ci sono piani per la JVM per supportare i generici in fase di runtime?
- 2. Ci sono piani per supportare "provider di tipi" per Scala SIQ (ScalaIntegratedQuery) come in F #?
- 3. Ci sono funzioni inline in java?
- 4. Piani per Enum estendibili
- 5. Ci sono molte eccezioni in Bad design in Java?
- 6. Ci sono degli svantaggi per SEAM?
- 7. Git controlla se ci sono commit in sospeso per spingere
- 8. Perché non ci sono ObservableQueues in JavaFX?
- 9. Ci sono (ci sono stati) sforzi per creare un linguaggio schema per formati binari arbitrari?
- 10. Quali fantasiosi modi ci sono ora per supportare lo scripting in java?
- 11. ClassValue in Java 7
- 12. Ci sono buone esercitazioni per ice4j?
- 13. Quali alternative Visio per Mac ci sono?
- 14. Ci sono concorrenti per Atlassians Fisheye?
- 15. Piani di libreria per C++ 0x?
- 16. Piani tremolanti
- 17. java streams in Java 7
- 18. Come forzare un'unione per avere successo quando ci sono conflitti?
- 19. In Java, perché gli oggetti array sono? Ci sono dei motivi specifici?
- 20. Quali sono le insidie durante l'aggiornamento a Java 7
- 21. Nashorn in Java 7
- 22. Quanti impliciti ci sono in Scala?
- 23. in javascript dom, ci sono regole per attribuire nomi?
- 24. Java binario 7 per Mac
- 25. JDBC driver per Java 7
- 26. perché ci sono più fcntl.h in linux?
- 27. Ci sono dei puntatori in javascript?
- 28. In C# ci sono oggetti Lambda Expressions?
- 29. Quante tuple ci sono in una connessione?
- 30. ci sono comunicazioni SFTP in C#?
Guava sta diventando una biblioteca fantastica. Questo rocce! +1 –
Lo avrebbe accettato se 'Sets.immutableEnumSet' avrebbe restituito una classe pubblica 'ImmutableEnumSet', non solo' ImmutableSet'. Anche se proverò a fare una richiesta per farlo. –
Quale beneficio vedi avere questo tipo di oggetto ImmutableEnumSet pubblico, mi chiedo? –