F: Ist es möglich, einen String-Wert zum dynamischen Erstellen eines Variablennamens zu verwenden? Java?
Zum Beispiel mit dem folgenden Code:
<code class="java">String name = "dog"; dog name = new dog();</code>
Wie kann man Java anweisen, „Name“ als String zu interpretieren und ihn dem neu erstellten „Hund“-Objekt zuzuweisen?
A: Während einige Skriptsprachen wie PHP ein solches Verhalten zulassen, ist dies bei Java nicht der Fall. In Java unterscheiden sich Variablennamen von Variablenreferenzen, die Zugriff auf bestimmte Objekte ermöglichen.
Eine Möglichkeit, die gewünschte Funktionalität zu erreichen, besteht darin, eine Map zu verwenden, um Strings mit Objekten zu verknüpfen. Zum Beispiel:
<code class="java">Map<String, Dog> dogMap = new HashMap<>(); dogMap.put("Fido", new Dog("Fido")); Dog myPet = dogMap.get("Fido");</code>
Alternativ gibt es zahlreiche andere Möglichkeiten, Referenzen auf Objekte zu erhalten, wie Arrays, ArrayLists, LinkedLists und andere Sammlungen.
Weitere Erläuterung:
Wenn das Ziel darin besteht, dynamisch ein Objekt mit einem beliebigen Namen zu erstellen, der über seine Erstellung hinaus bestehen bleibt, ist es wichtig zu verstehen, dass der Variablenname nicht gleichbedeutend mit dem „Objektnamen“ ist. Beide Variablen, „fido“ und „spot“, enthalten trotz ihrer unterschiedlichen Namen Verweise auf dasselbe Objekt.
<code class="java">Dog fido = new Dog; Dog spot = fido; // now fido and spot refer to the same object</code>
Um jedem Objekt einen „Namen“ zuzuweisen, sollten Sie das Hinzufügen einer „Name“-Eigenschaft in Betracht ziehen zur Klasse hinzufügen.
<code class="java">class Dog { private String name; public Dog(String name) { this.name = name; } public String getName() { return name; } }</code>
Dadurch kann jedes Hundeobjekt seinen eigenen eindeutigen Namen haben.
Das obige ist der detaillierte Inhalt vonKann ich Variablennamen in Java mithilfe eines Zeichenfolgenwerts dynamisch erstellen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!