Come posso copiare in profondità un vettore in J2ME/BlackBerry?Come posso copiare in profondità un vettore in J2ME/BlackBerry?
risposta
Sfortunatamente, non esiste un modo affidabile per eseguire una copia profonda su un vettore di oggetti.
Solo una breve rassegna di ciò che ritengo sia una "copia profonda": una copia profonda è una copia in cui non solo sono copiati i contenuti di una raccolta (vettore, in questo caso), ma gli oggetti contenuti nel vettore sono copiati in modo indipendente. In altre parole: se il vettore V contiene A, e una copia (V ') di V è fatta, una copia di A (A') in V 'non è influenzata da nessuna modifica ad A e viceversa.
In genere, questo sarebbe implementato "clonando" un oggetto. Sfortunatamente, se non hai il controllo sugli oggetti nel Vettore, non hai un modo ragionevole di clonarli, specialmente dal momento che JavaME non possiede un'interfaccia Clonabile (per quanto ho potuto trovare).
Ovviamente, se si controllano gli oggetti, è possibile creare la propria interfaccia Cloneable che specifica un metodo clone() che restituisce una copia completamente indipendente dell'oggetto. Quindi, è necessario assicurarsi che il proprio vettore di clonazione speciale accetti solo oggetti che implementano tale interfaccia. Da lì, è abbastanza facile (in termini di codice) per te creare un vettore che possa clonare se stesso.
Sarà necessario copiare il contenuto del vettore con un ciclo.
Enumeration e = projects.elements();
while (e.hasMoreElements()) {
this.projects.addElement((Project) e.nextElement());
}
bisogno di ulteriori informazioni vedi pagina 2 The Java Forum risposta 18, la risposta è lì.
che fa una copia di ciascuno degli elementi. –
@DanG è il meglio che puoi ottenere in J2ME, ti sei mai preoccupato di leggere i documenti vettoriali? http://en.wikipedia.org/wiki/Object_copy#Deep_vs._Shallow_vs._Lazy_copy se ho letto correttamente il codice che ho dato è una copia profonda, poiché i due vettori sono indipendenti. –
una copia completa completa creerebbe copie di ciascun elemento secondario e ognuno di questi sotto-elementi secondari e così via lungo la struttura. In nessun punto deve essere copiato un riferimento a un oggetto; sempre una copia di ogni campo. Poiché stai copiando i riferimenti agli oggetti degli elementi, questa è una copia superficiale a quel livello. –
Poiché è stato contrassegnato come BlackBerry e non solo J2ME, è necessario menzionare che esiste una classe CloneableVector che fa parte delle API BlackBerry. Se si sta tentando di attenersi al rigore J2ME, questo sarà di scarsa utilità. Tuttavia, se stai mirando solo a BlackBerry, soddisfa le tue esigenze.
Questa è solo la versione 5.0. Al momento non ci sono molti dispositivi su 5.0. –
Non è vero, è almeno 4.6 e non ho voglia di guardare più indietro per controllare quando è arrivato. Mi è appena capitato di indicare il documento 5.0. – Fostah
Lavoro in 4.3 ... –
- 1. Come posso copiare in profondità un oggetto DateTime?
- 2. Come forzare JavaScript per copiare in profondità una stringa?
- 3. Programmazione C. Come copiare in profondità una struttura?
- 4. Come copiare in profondità QMap e altri contenitori Qt
- 5. Come posso copiare un blocco vettoriale nell'altro
- 6. Qual è il modo migliore per copiare in profondità un hash di hash in Perl?
- 7. Come `ls` solo un livello in profondità?
- 8. Come posso copiare un oggetto immutabile come tupla in Python?
- 9. Come posso copiare una variabile in tensorflow
- 10. Come posso copiare ** kwargs in self?
- 11. Come posso convertire un vettore in un record?
- 12. Come posso convertire un vettore in un array di celle?
- 13. Come copiare dati binari in un stringing
- 14. Come posso clonare/copiare un'istanza di un oggetto in CoffeeScript?
- 15. TeamCity - Come posso copiare un VCS Root?
- 16. Come posso aggiungere a un vettore in Octave?
- 17. TortoiseSVN - Come posso checkout elementi supplementari in personalizzato Profondità cassa
- 18. Come cercare un elemento in un vettore?
- 19. Qual è il modo più semplice per clonare in profondità (copiare) un oggetto Scala mutabile?
- 20. Come posso liberare un vettore puntatore?
- 21. selezionare un singolo membro da ogni struttura in un vettore std :: in un altro vettore
- 22. Come posso creare un pigro-ss vettore
- 23. Posso semplicemente copiare .git in un'altra directory?
- 24. Profondità di ricorsione in C# - Quanto in profondità puoi andare
- 25. Come copiare il vettore per mappare in STL in modo elegante
- 26. Come posso ottenere la profondità di un file jpg?
- 27. Perché non posso push_back un unique_ptr in un vettore?
- 28. Come abbinare un vettore vuoto in Haskell?
- 29. Il modo più veloce per copiare il contenuto di un vettore in un array?
- 30. come leggere efficientemente un file binario in un vettore C++
Ahimè, era quello che temevo. Grazie. –
Potrei implementare un'interfaccia clonabile, ma non sarebbe altrettanto veloce di qualcosa di nativo per J2ME. –