2011-03-28 39 views
0

我需要特定的值存储到一个用户名到内存中,我在想是这样动态命名瓦尔,这样我就可以做这样的事情Java的:我应该如何存储每个用户的事情在内存

["bubby4j_falling"] = true; 

和索引它通过

["bubby4j_falling"] 

但是,这只是一个例子,我知道这是行不通的,我只是想办法快速,简单地获得和店里的东西动态。

回答

7

您想要使用带有字符串键的映射,例如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")) { ... } 

但UF你已经有了User对象(和你应该),你最好使用Set<User>,或者甚至让falling只是用户对象的属性。然后,您可以使用Map<String, User>按名称获取用户对象。

1

@PaŭloEbermann的回答是现货。

我只想指出Java语言没有任何类似动态变量变量。所有Java变量名称及其类型都在Java源代码中声明。即使反射也不会允许您在现有课程中即时创建新变量。

Java被设计为一种静态编程语言,如果以这种方式使用它,效果最好。 (理论上,如果你在源代码或字节代码生成技术方面混淆,你可以用新的变量动态地创建一个新的类,然而,这涉及到大量的工作,而不是一个明智的程序员考虑的东西为了解决一个简单的问题。此外,我怀疑这种方法实际上对你的特殊情况有帮助。)