Q: 文字列値を使用して変数名を動的に作成することは可能ですか? Java?
たとえば、次のコードがあるとします。
<code class="java">String name = "dog"; dog name = new dog();</code>
「name」を文字列として解釈し、新しく作成された「dog」オブジェクトに割り当てるように Java に指示するにはどうすればよいでしょうか?
A: PHP などの一部のスクリプト言語ではそのような動作が許可されていますが、Java では許可されていません。 Java では、変数名は、特定のオブジェクトへのアクセスを提供する変数参照とは異なります。
必要な機能を実現する 1 つの方法は、マップを利用して文字列をオブジェクトに関連付けることです。例:
<code class="java">Map<String, Dog> dogMap = new HashMap<>(); dogMap.put("Fido", new Dog("Fido")); Dog myPet = dogMap.get("Fido");</code>
あるいは、配列、ArrayList、LinkedList、その他のコレクションなどのオブジェクトへの参照を取得する方法は他にも多数あります。
さらなる説明:
目的が、作成後も存続する任意の名前を持つオブジェクトを動的に作成することである場合、変数名は「オブジェクト名」と同義ではないことを理解することが重要です。 「fido」と「spot」の両方の変数は、名前が異なっていても、同じオブジェクトへの参照を保持します。
<code class="java">Dog fido = new Dog; Dog spot = fido; // now fido and spot refer to the same object</code>
各オブジェクトに「名前」を割り当てるには、「name」プロパティを追加することを検討してください。
<code class="java">class Dog { private String name; public Dog(String name) { this.name = name; } public String getName() { return name; } }</code>
これにより、各 Dog オブジェクトに独自の一意の名前を付けることができます。
以上がJava で文字列値を使用して変数名を動的に作成できますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。