Mentre si può fare ciò che si prova in alcuni linguaggi di scripting come PHP (e questa domanda viene spesso posta da molti programmatori PHP che avviano Java), questo non è il modo in cui Java funziona, e infatti i nomi delle variabili sono un molto meno importante di quanto tu possa realizzare e difficilmente esiste anche dopo la compilazione del codice. Ciò che è molto più importante e la chiave sono variabili riferimenti: la possibilità di accedere a un particolare oggetto in un punto particolare del programma e si può fare in modo che le stringhe facciano riferimento agli oggetti semplicemente utilizzando una mappa come unico senso.
Per esempio
Map<String, Dog> dogMap = new HashMap<String, Dog>();
dogMap.put("Fido", new Dog("Fido"));
Dog myPet = dogMap.get("Fido");
Oppure si può ottenere riferimenti a oggetti in molti altri modi, come tramite gli array, ArrayLists, LinkedLists o diversi altri collectinos.
Modifica
È stato:
Il fatto è che nel mio codice ho intenzione di utilizzare un metodo per creare oggetti, il nome dell'oggetto è arbitraria, ma ho bisogno di essere dinamico perché non è temporaneo, quindi il nome effettivo dell'oggetto deve cambiare o scriverò sopra l'oggetto dichiarato in precedenza.
Questo è esattamente ciò che intendevo quando ho detto che il nome della variabile non è così importante come si pensa. Il nome della variabile è non il "nome oggetto" (questo in realtà non esiste di fatto).
Per esempio, se si crea un cane in una variabile denominata Fido, e poi assegnarlo a un nuovo spot variabile chiamata, entrambe le variabili, pur avendo nomi diversi si riferiscono alla stessa oggetto:
Dog fido = new Dog;
Dog spot = fido; // now fido and spot refer to the same object
Se si vuole dare una variabile un "nome" in considerazione dando la classe una proprietà nome:
class Dog {
private String name;
public Dog(String name) {
this.name = name;
}
public String getName() {
return name;
}
}
ora è possibile dare ad ogni cane oggetto proprio (semi) nome univoco, se lo si desidera.
Perché vuoi farlo? Sicuramente c'è un modo migliore per ottenere ciò che stai cercando di fare. –
Probabilmente dovresti conoscere l'API di reflection di Java se è quello che vuoi. – fge
Penso che il titolo e il contenuto di questa domanda siano incoerenti. Sembra che tu * non * stia tentando di creare una variabile il cui nome è basato sul valore di una stringa. Piuttosto sembra che tu voglia impostare la classe di una variabile in base al valore della stringa. Se quest'ultimo è il caso, il modello 'Factory' potrebbe aiutare. – Kavka