我试图使用某个字符串引用变量,但不知道如何操作。我知道如果我真的不得不使用if语句,但我确信有一个简单的方法。一个例子是名为dog的Integer。我会尝试使用另一个包含文本狗的字符串来访问整数。
private int dog;
String anything = "dog";
无论如何这有可能吗?谢谢!
答案 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,因为它只会使它混乱。