Qual è il modo più semplice per clonare in profondità (copiare) un oggetto Scala mutabile?Qual è il modo più semplice per clonare in profondità (copiare) un oggetto Scala mutabile?
risposta
Poiché si desidera il modo più semplice per copiare in profondità un oggetto Scala e non il più veloce, è sempre possibile serializzare l'oggetto, a condizione che sia serializzabile e quindi deserializzare di nuovo. Il seguente codice viene eseguito solo quando compilato, non in REPL.
def deepCopy[A](a: A)(implicit m: reflect.Manifest[A]): A =
util.Marshal.load[A](util.Marshal.dump(a))
val o1 = new Something(...) // "Something" has to be serializable
val o2 = deepCopy(o1)
Una soluzione specifica per Java (che dovrebbe funzionare anche in Scala) è la Cloner library. È veloce, facile, profondamente clona gli oggetti basati sui campi (usando la riflessione) ed è abbastanza intelligente da non clonare oggetti immutabili noti (come String, Integer, ecc.). Infine, puoi registrare oggetti immutabili personalizzati così da non clonarli.
Lo consiglio vivamente.
Prima volta ho sentito parlare della libreria Cloner. Sembra molto utile! –
- 1. Qual è il modo migliore per clonare/copiare in profondità un dizionario generico .NET <string, T>?
- 2. Qual è il modo migliore per copiare in profondità un hash di hash in Perl?
- 3. Il modo più semplice per copiare/clonare un'istanza di documento mangusta?
- 4. Qual è il modo più semplice ed efficace per creare un heap minimo in Scala?
- 5. Qual è il modo più semplice per usare reify (ottenere un AST di) un'espressione in Scala?
- 6. Il modo più semplice per copiare/duplicare un database RethinkDB?
- 7. Come posso clonare/copiare un'istanza di un oggetto in CoffeeScript?
- 8. Qual è il modo più semplice per bloccare un oggetto in Django
- 9. Qual è il modo corretto per rimuovere elementi da una mappa scala mutabile usando un predicato
- 10. Qual è il modo più semplice per analizzare JSON in Scala?
- 11. Qual è il modo più semplice per implementare Scala PartialFunction in Java?
- 12. Il modo più semplice per copiare int a byte []
- 13. Qual è il modo più semplice per mantenere oggetti java?
- 14. Qual è il modo idiomatico di passare per valore mutabile?
- 15. C#: qual è il modo più semplice per sottrarre tempo?
- 16. Il modo più semplice per sommare due elenchi in Scala?
- 17. Come posso copiare in profondità un oggetto DateTime?
- 18. Qual è il modo più semplice per sottrarre un mese da una data in Python?
- 19. Qual è il modo più semplice per convertire questo documento XML nel mio oggetto?
- 20. Qual è il modo più semplice per inserire un indice in un controllo ripetitore in .NET?
- 21. Il modo migliore per clonare gli osservabili?
- 22. Qual è il modo Pythonic per implementare un semplice FSM?
- 23. Qual è il modo migliore per clonare un oggetto evento JavaScript in modo che possa essere nuovamente inviato?
- 24. come clonare un oggetto in Android?
- 25. In Chrome, qual è il modo più semplice per visualizzare il tipo mime di un documento?
- 26. Qual è il modo più semplice in Javascript per ottenere solo il segno di un numero?
- 27. Qual è il modo più semplice per avvolgere un file .aac grezzo in un contenitore .m4a
- 28. Qual è il modo più semplice per accedere a un microfono di un computer in Python?
- 29. Il modo più semplice per copiare DB di SQL Server per testare il DB?
- 30. Qual è il modo più semplice per combinare più raccolte in uno stream in Java?
Bella risposta! Non può essere molto più facile di così! –
Ho fatto un piccolo [test] (https://gist.github.com/4409b8562ac24fc042b0) ma continuo a ricevere _ClassNotFoundException_ (e le classi di casi sono serializzabili). – Tralamazza