如何在另一个变量中创建变量?

时间:2012-09-16 12:11:43

标签: java string variables

  

可能重复:
  Dynamic Variable Names in Java:

假设我有一个字符串,如下所示。

String s = "Hello";

现在,我想创建一个字符串,但字符串的变量将被称为“Hello”。为了使字符串的名称为“Hello”,我必须访问字符串s以获得名称“Hello”,因此我可以将其用作变量名。以下是我想看到的内容。

String Hello = "I want to do this, But from Accessing String s So I KNOW that String s = Hello";

感谢您的努力,请尝试向我解释,因为我是Java初学者。 :d

5 个答案:

答案 0 :(得分:3)

您尝试做的是添加一个间接层。您无法以静态语言(如Java / C / C ++ / Pascal / etc

)动态访问变量

你可以做的是模仿动态语言使用的动态上下文,例如创建一个Map来保存变量名称和值,在这种情况下你可以拥有

Map<String,String> stringVars = new HashMap<String,String>();

// set a "variable"
stringVars.put("Hello", "value");

// get a "variable"
System.out.println(stringVars.get("Hello"));

答案 1 :(得分:2)

使用反射(不推荐):

public class MainClass
{
    public String Hello = "I want to do this, But from Accessing String s So I KNOW that String s = Hello";

    public static void main(String[] args) throws Exception
    {
        MainClass m = new MainClass();

        String s = "Hello";
        String result = (String) MainClass.class.getField(s).get(m);
        System.out.println(result);
    }
}

<强>输出:

I want to do this, But from Accessing String s So I KNOW that String s = Hello

相反,请使用地图作为其他插图。

答案 2 :(得分:0)

在java中是不可能的。

你唯一能做的就是使用A map界面&#39;实现,例如HashMap。使用put方法,您可以指定&#39;给定名称的价值&#39;。该名称将是key,并且必须在地图中是唯一的,就像变量在其范围内具有唯一名称一样。

要检索value,请调用get方法传递相应的key(例如字符串'Hello')作为参数。

答案 3 :(得分:0)

在Java中,您无法获取指向对象的变量(引用)名称,因为对象不知道对它的引用,并且可以有多个引用同一对象的变量。

另一方面,你可以做这样的事情;但我不知道会有什么帮助:

String s = "Hello";
Reference<String> hello = new SoftReference<String>(s);
String myStringAccessedWithHello = hello.get();

答案 4 :(得分:0)

你能否使用一个带字符串的Map(例如“Hello”)并将其映射到另一个字符串(例如“我想这样做,但是从Accessing String s所以我知道String s = Hello”) 。如下所示:

Map<String, String> stringMap = new HashMap<String, String>();
stringMap.put("Hello", "I want to do this, But from Accessing String s So I KNOW that String s = Hello");

然后,您可以通过调用:

找到地图中的所有键值(例如“Hello”)
Set<String> stringKeys = stringMap.keySet();

你可以像这样查找属于“Hello”键的长字符串:

String longValue = stringMap.get("Hello");

这就是我如何使用一个简单的String值来查找一个难以处理的String值。请记住,您还可以使用Map将String值映射到任何其他类型的对象。