Double new_val = 10.0;
String a = "new";
String b = "val";
Double v1 = 25.0;
Double result = 0.0;
Public void getVal() {
//String variable c contain double variable name
String c = a+"_"+b;
//I want to get c's value as 10.0 as its a variable already defined
result = v1*c;
}
" C"字符串值包含变量名称" new_val"这用于进一步
答案 0 :(得分:3)
如果问题是,你是否可以在运行时知道其名称的变量值,那么好消息......是的,你肯定可以...你需要做的名为REFFLECTION ...
的东西允许你作为开发人员对类进行一次检查,甚至“浏览”该类所持有的所有信息
在您的情况下,您需要通过名称找到“变量”(或字段)并读取其值...
查看文档以获取更多信息,我建议您考虑是否确实需要这样做...通常,当您想要从另一个类访问信息而不是浏览自己时,会使用反射。 。
你可以重新设计一点应用程序并定义一些常量和方法,以便其他人可以看到你正在暴露给他们的东西并为他们提供它们......
public class Jung {
Double new_val = 10.0;
String a = "new";
String b = "val";
Double v1 = 25.0;
Double result = 0.0;
public void getVal() {
// String variable c contain double variable name
String c = a + "_" + b;
Double cAsVal = 0.0;
try {
cAsVal = dale(c);
} catch (NoSuchFieldException e) {
e.printStackTrace();
} catch (SecurityException e) {
e.printStackTrace();
} catch (IllegalArgumentException e) {
e.printStackTrace();
} catch (IllegalAccessException e) {
e.printStackTrace();
}
result = v1.doubleValue() * cAsVal.doubleValue();
System.out.println(result);
}
public static void main(String[] args) {
Jung j = new Jung();
j.getVal();
}
public Double dale(String c)
throws NoSuchFieldException, SecurityException, IllegalArgumentException, IllegalAccessException {
Field field = this.getClass().getDeclaredField(c);
field.setAccessible(true);
Object value = field.get(this);
return (Double) value;
}
}
答案 1 :(得分:0)
你有什么问题?
如果你想做" 25 * c",它就像用字符串(" new_val")来复制Double(25)一样。它不会工作
答案 2 :(得分:0)
如果我是正确的,你不能在代码中根据Java中的另一个变量值使用变量名。如果需要在变量中包含字符串值,则应创建一个包含字段的类,例如:
class myVariable{
String name;
int value;
}
答案 3 :(得分:0)
我想将字符串值(" c")转换为变量名称(Double new_val)
很高兴看到reflection可以用来完成工作。
对于您的情况,Map
也可以帮您解决问题。
public static void main(String args[]){
HashMap<String, Double> map = new HashMap<String, Double>();
map.put("new_val", 10.0);
String a = "new";
String b = "val";
Double v1 = 25.0;
Double result = 0.0;
//String variable c contain double variable name
String c = a+"_"+b;
//String variable c used for calculation
result = v1 * map.get(c);
System.out.println(result);
}