Per ottenere davvero un buon rendimento durante la copia di una serie di dati tra due tipi di elenchi che sono sconosciuti gli uni agli altri, ci deve essere un meccanismo con il quale un tipo "fidato" può chiedere a ciascuno di esporre gli array di supporto associati a un intervallo di elementi e quindi utilizzare un'operazione di copia di massa per spostare i dati da uno all'altro. Sarebbe possibile scrivere tale classe interamente in Java, avendo un metodo GetArraySource
passare al costruttore di una classe affidabile ArraySource
un oggetto che potrebbe utilizzare per richiedere l'array di supporto associato a un particolare elemento (il ritorno includerebbe l'array di supporto e la gamma di elementi inclusi al suo interno).Il codice che desidera la copia chiamerebbe GetArraySource
e passava allo ArraySource
in tal modo restituito al metodo CopyFromArraySource
della lista di destinazione che poteva quindi chiedere allo ArraySource
di copiare uno o più intervalli di elementi nei propri array di supporto.
Se ArraySource
era una classe fornita con Java e Oracle documentato esattamente quello che avrebbe fatto con gli array che ha ricevuto, allora sarebbe possibile per i tipi come ArrayList
e String
per esporre il loro contenuto come ArraySource
, o accettare i dati esterni da un ArraySource
, senza esporre in modo errato la propria matrice a qualsiasi codice che potrebbe abusarne.
Sfortunatamente, a meno che Oracle incorpori una cosa del genere nella distribuzione Java, il supporto sarà probabilmente troppo scarso per essere utile. Non è positivo che l'elenco delle fonti supporti una di queste classi, il supporto di destinazione un'altra e il codice che richiede l'operazione di copia un terzo. Tutte e tre le classi devono supportare la stessa particolare classe helper-segmento-copia-copia.
si chiama Clojure; D Puoi leggere su (conj) qui: http://clojuredocs.org/clojure.core/conj – sova
si chiama anche Scala, Haskell e ... (inserisci il nome di qualsiasi potente linguaggio di programmazione) –