2012-08-09 145 views
0
int text01=2012; 
String entrance= "text01"; 

如何通过字符串'入口'获取'text01'的int value(2012)只有变量名称为字符串时获取变量值

+3

我相信你的问题的答案很简单。我无法理解你的问题......请重新说明。 – Yunchi 2012-08-09 03:49:25

+0

我认为他的意思是一个eval()式的表达式...... – 2012-08-09 03:51:33

+2

如果它是一个字段,您可以尝试使用反射。 – oldrinb 2012-08-09 03:55:16

回答

4

如果你知道类是什么,你可以使用反射:

public class Test 
{ 
    int text01 = 2012; 
} 

而且别的地方,你可以得到该字段的值:

String entrance = "text01"; 
Test t = new Test(); 

Field f = t.getClass().getDeclaredField(entrance); 
System.out.println("value = "+f.getInt(t)); 

// you can even change the value: 
t.text01 = 2013; 
System.out.println("value = "+f.getInt(t)); 

这将打印出2012,然后2013

+0

我希望它会比这个简单得多:) – 2012-08-09 03:52:52

0

我想你可能想是这样的: public Map values = new HashMap(); values.add("text01", 2012);

System.out.println(values.get("text01"));

+0

是,Map是一个好方法,但我想要找到一个更智能的方法来获取值,而不是在获取此值之前将值放入Map中。 @TehHippo – Xxg 2012-08-09 05:06:03

+0

我会质疑你为什么要以这种方式访问​​它。这不是真的如何设计Java。思考可以做你需要的东西,看看上面的帖子,但我会考虑以不同的方式解决问题。使用地图是一种明智的做法,最终会产生相同的结果。 原因是因为变量text01的值为2012,但变量名称(text01)正在像变量一样使用。两个变量,地图是最合乎逻辑的。反思可能是你想要的,但它可能很容易被过度杀伤。 – 2012-08-09 05:07:35

2

的整数变量text01并存储在一个字符串变量中的值text01是两回事。

这是不可能得到一个变量的值,像这样因为无论是INT变量text01并存储在字符串变量text01价值无关彼此。

更新:

万一有人正在寻找一个简单的方法来使用这个图是一个不错的选择。只是变量名称为键,值存储为键值

Map<String, Integer> m = new HashMap<String, Integer>(); 


    int text01=2012; 
    String entrance= "text01"; 

    m.put(entrance, text01); 

来获取值

m.get(entrance); 
0

INT text01 =成2012;

字符串入口= “text01”;

2012和test01是具有不同参考的两个不同值。

0

你可以使用apache commons org.apache.commons.beanutils.PropertyUtils类来做到这一点。

int text01 = 2012; 
String entrance = "text01"; 

只需使用: 如果你的类的对象是Test测试=新的测试();

Object value = PropertyUtils.getProperty(test, entrance);