我需要将特定于用户名的值存储到内存中,我正在考虑动态命名变量等内容,以便我可以执行类似
的操作["bubby4j_falling"] = true;
并按
索引["bubby4j_falling"]
但是,这只是一个例子,我知道这不会起作用,我只想要一种方法来快速简单地动态地存储和存储东西。
答案 0 :(得分:7)
您希望使用包含字符串键的Map,例如HashMap<String, something>
。
您的示例如下所示:
Map<String, Boolean> map = new HashMap<String, Boolean>();
map.put("bubby4j_falling", true);
if(map.get("bubby4j_falling")) {
...
}
实际上,在您的情况下,Set<String>
会更有用:
Set<String> fallingUsers = new HashSet<String>();
fallingUsers.add("bubby4j");
if(fallingUsers.contains("bubby4j")) { ... }
但是如果你已经拥有User
个对象(你应该这样做),你应该更好地使用Set<User>
,甚至让这个falling
只是用户对象的属性。然后,您可以使用Map<String, User>
按名称获取用户对象。
答案 1 :(得分:1)
@PaŭloEbermann的回答很明显。
我只想指出Java语言没有类似于动态变量的东西。所有Java变量名称及其类型都在Java源代码中声明。甚至反射都不允许您在现有类中动态创建新变量。
Java被设计为一种静态编程语言,如果你以这种方式使用它,效果最好。
(理论上,如果你搞乱了源代码或字节码生成技术,你可以动态创建一个带有新变量的新类。但是,这涉及大量的工作,而不是一个明智的程序员考虑做的事情解决一个简单的问题。此外,我怀疑这种方法在你的特定情况下确实会有所帮助。)