Java 如何使用字符串引用变量

Java 如何使用字符串引用变量,java,Java,我试图引用一个变量使用某个字符串,但不知道如何做。我知道如果我真的必须使用if语句,我可以使用if语句,但我相信有一个简单的方法。例如,一个名为dog的整数。我将尝试使用另一个包含文本dog的字符串访问整数 private int dog; String anything = "dog"; 这有可能吗?谢谢 试试这个: // use a map for referring to a value given its name Map<String, Integer> va

我试图引用一个变量使用某个字符串,但不知道如何做。我知道如果我真的必须使用if语句,我可以使用if语句,但我相信有一个简单的方法。例如,一个名为dog的整数。我将尝试使用另一个包含文本dog的字符串访问整数

  private int dog;
    String anything = "dog";
这有可能吗?谢谢

试试这个:

// 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
//使用映射引用给定名称的值
Map vars=newhashmap();
//例如,让我们使用这些值
String anything=“dog”;
int dog=10;
//将值绑定到名称
放(任何东西,狗);
//检索给定名称的值
获得(任何东西);
=> 10

publicstaticvoidmain(字符串[]args){
Map mapping=newhashmap();
}

newhashmap()
对于java 7之前的版本,有两个选项:创建连接两者的
映射,或者使用反射。我更喜欢反思

要获取字段,请执行以下操作:

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);
    }
}
输出:

十,

创建要使用的类的对象。然后对该对象的类使用
getDeclaredField()
方法。这将查看设置的
private
字段,
getField()
仅保存
public
字段。就这样

我已经从帖子中删除了try-catch,因为它会使它变得杂乱无章。

您应该使用字符串到整数的组合。比如说,

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);
}

@我想他需要更多的解释。也许你可以发布一个代码示例?天哪,这以前从未被问过。叹气……这是可能的(通过地图或反射),但您能证明为什么要这样做吗?我正在为游戏创建一个服务器,需要通过每个玩家的特定客户端ID引用他们,以便更新他们的位置。@Silver:然后使用地图,但不要尝试以这种方式使用变量。变量并不像您想象的那么重要,事实上,编译代码中几乎不存在变量。最重要的是参考资料,这就是地图对你的作用。在网站上搜索类似的问题(这是你应该做的,因为这个问题每天都会被问到)。
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}