PDA

View Full Version : [JAVA] Auto-creatore di nomi di oggetti


lolloxo
05-03-2008, 18:58
Cercherò di spiegarmi meglio che posso

while (condizione){

Variabili XXX = new Variabili();

}


In pratica questa riga di codice si trova nel Main.
E' un while che loopa più volte e ad ogni loop mi crea un oggetto di tipo Variabili che definisco con un costruttore.
Questo costruttore una volta accettati i dati, salva l'oggetto in un array.

COSTRUTTORE:
crea array
i=0
public Variabili(){
inserimento da tastiera String x,y,z
i=i+1
vettore[i]=oggetto XXX
}

Il problema è che in questo modo creo oggetti di tipo Variabili ma tutti XXX.
Cioè appena creo un nuovo oggetto XXX questo in teoria si sovrascrive al precedente quindi l'effetto è che tutti i campi del array puntano a XXX che è sempre lo stesso.
Io vorrei che fosse in modo tale che il "- XXX -" fosse variabile in modo tale da non farsi creare questo problema. Cioè una votla si chiama XXX1 e lo assegno alla prima posizione dell'array una volta XXX2 ecc ecc.
Una cosa simile insomma che crei vari nomi agli oggetti (altrimenti se non lo faccio si crea il problema che ho appena elencato giusto?)

m.distrutti
05-03-2008, 20:49
premesso che non so se ho capito bene quel che vuoi fare , in qualsiasi caso non credo sia possibile modificare dinamicamente i nomi a variabili (oggetto o non) ne in java ne in qualsiasi altro linguaggio (forse mi e' capitato in javascript ma si parla di programmazione totalmente differente)

sempre se ho capito bene te vuoi creare una struttura di istanze che memorizzino il loro stato e si inseriscano in quell'array

il loop e' corretto in se

while(condizione)
Tipo var = new Tipo();

il tuo problema e' che essendo 'i' (per come lo hai dichiarato te, membro di istanza ) ogni qual volta che, appunto, istanzi la classe 'i' viene inizializzato a zero e nel costruttore verra assegnato sempre all'indice zero dell'array il valore acquisito...(che tra l'altro anche l'array non essendo statico verrebbe creato e inizializzato ad ogni istanziamento della classe

prova a mettere static sia 'i' che l'array e dovresti aver risolto il problema, al max posta esattamente quello che vuoi fare cosi ti aiuto meglio , ora devo uscire piu tardi torno :P

Leo_SR
05-03-2008, 21:43
Se vuoi un insieme di oggetti "Variabili" devi agire in maniera diversa. Ad esempio:
public static void main(String[] args) {
ArrayList<Variabili> elenco_variabili = new ArrayList<Variabili>();
while (condizione) {
elenco_variabili.add(new Variabili());
}
//A questo punto l'oggetto elenco_variabili sarà un'ArrayList di oggetti Variabili
}

Spero di aver capito bene quello che ti serviva :)