假设我有一个字符串,如下所示。
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
答案 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值映射到任何其他类型的对象。