如何使用字符串引用变量

时间:2013-12-18 02:50:24

标签: java

我试图使用某个字符串引用变量,但不知道如何操作。我知道如果我真的不得不使用if语句,但我确信有一个简单的方法。一个例子是名为dog的Integer。我会尝试使用另一个包含文本狗的字符串来访问整数。

  private int dog;
    String anything = "dog";

无论如何这有可能吗?谢谢!

4 个答案:

答案 0 :(得分:2)

试试这个:

// use a map for referring to a value given its name
Map<String, Integer> vars = new HashMap<String, Integer>();

// for example, let's use these values
String anything = "dog";
int dog = 10;

// bind a value to a name
vars.put(anything, dog);

// retrieve the value, given its name
vars.get(anything);
=> 10

答案 1 :(得分:0)

http://docs.oracle.com/javase/7/docs/api/java/util/HashMap.html

public static void main(String[] args) {
    Map<String, MyObject> mapping = new HashMap<>();
}

or new HashMap<String, MyObject>(); for pre java 7

答案 2 :(得分:0)

你应该使用Map的String to Integer。例如,

public static void main(String[] args) {
  java.util.Map<String, Integer> dogMap = new java.util.HashMap<String, Integer>();
  dogMap.put("Snoop", 10);
  dogMap.put("doggy", 15);
  dogMap.put("dog", 20);

  System.out.println(dogMap);
}

哪个输出

{doggy=15, Snoop=10, dog=20}

答案 3 :(得分:-1)

两个选项:创建连接两者的Map<String, Object>,或使用反射。我更喜欢反思。

为了得到这个字段:

public class Test {
    private int dog = 10;
    private String anything = "dog";

    public static void main(String[] args){
        Test obj = new Test();
        Object field = obj.getClass()
                          .getDeclaredField(obj.anything)
                          .get(obj);            
        System.out.println(field);
    }
}

输出:

  

10

创建您将使用的类的对象。然后在该对象的类上使用getDeclaredField()方法。这将查看已设置的private字段,getField()仅包含public字段。就是这样。

我已从帖子中删除了try-catch,因为它只会使它混乱。