|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 |
|
Member
Iscritto dal: Aug 2003
Messaggi: 202
|
[JAVA]HELP Clone()
Salve ragazzi ho un problema devo fare il clone di un oggetto prima di andare a modificare i pesi di una matrice che è definita al suo interno come campo privato.
Presupposto che ho implementato il metodo clone nell'oggetto WeightMatrix con anche il campo privato weight ma il risultato è che dopo l'esecuzione del clone sia l'oggetto originale ke quello clonato mi restituiscono lo stesso valore della matrice weight. Mentre uno dovrebbe restituirmi il vekkio vaolore e il clone il nuovo... In cosa sbaglio? void changeFibredWeight(float input) { for(int k = lastMatrix; k >= 0; k--) { WeightMatrix weight=weightMatrixArray[k]; WeightMatrix w=(WeightMatrix)weight.clone(); w.changeFibredWeights(input); float[][] ss=w.getWeights(); float[][] sss=weight.getWeights(); System.out.println("i pesi nuovi sono "+ss[0][0]); System.out.println("i pesi vekki sono "+sss[0][0]); } } Grazie |
|
|
|
|
|
#2 |
|
Junior Member
Iscritto dal: Apr 2006
Città: Roma
Messaggi: 12
|
Ad una prima e rapida occhiata mi verrebbe da pensare che clone() non sia implementato nel modo giusto, anche perchè nel resto del codice non vedo problemi.
|
|
|
|
|
|
#3 |
|
Junior Member
Iscritto dal: Apr 2006
Città: Crotone
Messaggi: 13
|
Credo anch'io che tu abbia sbagliato a reimplementare il metodo clone() di Java. Sei sicuro di aver fatto nel metodo una copia "profonda" degli oggetti weight, e non una copia dei soli riferimenti?
|
|
|
|
|
|
#4 | |
|
Member
Iscritto dal: Aug 2003
Messaggi: 202
|
Quote:
public Object clone() { try { WeightMatrix cloned=(WeightMatrix)super.clone(); cloned.weight=(float[][])this.weight.clone(); cloned.bias=(float[])this.bias.clone(); return cloned; } catch (CloneNotSupportedException e) { return null; } } considerando ke i campi privati della classe sono : float weight[][]; float bias[]; int size; ... |
|
|
|
|
|
|
#5 | |
|
Senior Member
Iscritto dal: Dec 2005
Messaggi: 7262
|
Quote:
|
|
|
|
|
|
|
#6 |
|
Junior Member
Iscritto dal: Apr 2006
Città: Crotone
Messaggi: 13
|
In questo modo, essendo la matrice un'array di array, e quindi di oggetti, non fai altro che copiare i riferimenti a quei vettori. Dovresti creare una nuova matrice e inserire al suo interno i valori presenti nella vecchia. Solo così fai una copia profonda.
Spero di essere stata utile. |
|
|
|
|
|
#7 | |
|
Member
Iscritto dal: Aug 2003
Messaggi: 202
|
Quote:
grazie sì sei stata utile in realtà ho risolto creando una matrice weight che mantiene i valori (float) vekki e quelli modificati vanno nella weight originale quindi non ho avuto + bisogno del clone ankè perkè pensavo di aver fatto tutto bene... grazie |
|
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 15:15.


















