2012-08-09 120 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);