java – 从String获取名称变量
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了java – 从String获取名称变量,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1620字,纯文字阅读大概需要3分钟。
内容图文
示例代码:
int width = 5;
int area = 8;
int potato = 2;
int stackOverflow = -4;
现在,假设我想让用户输入一个字符串:
String input = new Scanner(System.in).nextLine();
然后,说用户输入马铃薯.我如何检索名为potato的变量并用它做一些事情?像这样的东西:
System.getVariable(input); //which will be 2
System.getVariable("stackOverflow"); //should be -4
我查了一些东西并没有找到太多东西;我确实找到了一个名为“Reflection API”的引用,但这对于这个简单的任务来说似乎太复杂了.
有没有办法做到这一点,如果是这样,它是什么?如果“反射”确实有效并且如果它是唯一的方法,那么我将如何使用它来做到这一点?它的教程页面有各种内部的东西,我无法理解.
编辑:我需要将字符串保存在我正在做的变量中. (我不能使用地图)
解决方法:
对于你在这里所做的事情,使用反射似乎不是一个好的设计.最好使用Map< String,Integer>例如:
static final Map<String, Integer> VALUES_BY_NAME;
static {
final Map<String, Integer> valuesByName = new HashMap<>();
valuesByName.put("width", 5);
valuesByName.put("potato", 2);
VALUES_BY_NAME = Collections.unmodifiableMap(valuesByName);
}
或者使用Guava:
static final ImmutableMap<String, Integer> VALUES_BY_NAME = ImmutableMap.of(
"width", 5,
"potato", 2
);
或者使用enum:
enum NameValuePair {
WIDTH("width", 5),
POTATO("potato", 2);
private final String name;
private final int value;
private NameValuePair(final String name, final int value) {
this.name = name;
this.value = value;
}
public String getName() {
return name;
}
public String getValue() {
return value;
}
static NameValuePair getByName(final String name) {
for (final NameValuePair nvp : values()) {
if (nvp.getName().equals(name)) {
return nvp;
}
}
throw new IllegalArgumentException("Invalid name: " + name);
}
}
内容总结
以上是互联网集市为您收集整理的java – 从String获取名称变量全部内容,希望文章能够帮你解决java – 从String获取名称变量所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。