Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Creating a variable name using a String value

This is a simple question (I think)

Lets say I have this code (Assuming I have a dog class)

String name = "dog";
dog name = new dog();

How can I get java to recognize name as a String and name the object dog?

like image 201
charles horvath Avatar asked Dec 25 '11 22:12

charles horvath


People also ask

How do you create a variable name from a string?

String Into Variable Name in Python Using the vars() Function. Instead of using the locals() and the globals() function to convert a string to a variable name in python, we can also use the vars() function. The vars() function, when executed in the global scope, behaves just like the globals() function.

What is a string variable name?

A string variable is identified with a variable name that ends with the $ character. A string array variable has the $ character just before the left bracket that holds the array index. The variable name must begin with a letter and consist of 30 or fewer characters, including the $ character.

How do you set a variable to a string in Python?

To assign it to a variable, we can use the variable name and “=” operator. Normally single and double quotes are used to assign a string with a single line of character but triple quotes are used to assign a string with multi-lines of character. This is how to declare and assign a variable to a string in Python.


2 Answers

While you can do what you're trying in some scripting languages such as PHP (and this question is often asked by many PHP programmers who start Java), this is not how Java works, and in fact variable names are a much less important than you may realize and hardly even exist after code is compiled. What is much more important and what is key are variable references -- the ability to gain access to a particular object at a particular point in your program, and you can have Strings refer to objects easily by using a Map as one way.

For example

Map<String, Dog> dogMap = new HashMap<String, Dog>();
dogMap.put("Fido", new Dog("Fido"));

Dog myPet = dogMap.get("Fido");

Or you can gain references to objects in many other ways such as via arrays, ArrayLists, LinkedLists, or several other collectinos.

Edit
You state:

The thing is that in my code I am going to be using one method to create objects, the name of the object is arbitrary but I need it to be dynamic because it wont be temporary, so the actually name of the object has to change or I will be writing over the previously declared object.

This is exactly what I meant when I said that the name of the variable is not as important as you think it is. The variable name is not the "object name" (this really doesn't exist in fact).

For example if you create a dog in a variable named Fido, and then assign it to a new variable named spot, both variables, despite having different names will refer to the very same object:

Dog fido = new Dog;
Dog spot = fido; // now fido and spot refer to the same object

If you want to give a variable a "name" consider giving the class a name property:

class Dog {
   private String name;

   public Dog(String name) {
      this.name = name;
   }

   public String getName() {
      return name;
   }
}

Now you can give each Dog object its own (semi) unique name if you wish.

like image 171
Hovercraft Full Of Eels Avatar answered Oct 12 '22 21:10

Hovercraft Full Of Eels


I don't suppose you are thinking of Enums?

private static void test () {
  Animal animal = Animal.valueOf("Dog");
}

enum Animal {
  Dog,
  Cat,
  Cow,
  Pig,
  Rat,
  Ant,
  Gnu;
}
like image 22
OldCurmudgeon Avatar answered Oct 12 '22 20:10

OldCurmudgeon