我有一个问题..我有类似...随机生成变量名?
if(condition(TEST) == true){
something (NAME) = new something(this);
}
这是一个循环,也有过被迭代许多测试变量里面。我不知道有多少可能每个人都需要一个“(NAME)”变量,所以基本上我想知道如何让java“即时”为这些变量生成一个名称?
谢谢!
我有一个问题..我有类似...随机生成变量名?
if(condition(TEST) == true){
something (NAME) = new something(this);
}
这是一个循环,也有过被迭代许多测试变量里面。我不知道有多少可能每个人都需要一个“(NAME)”变量,所以基本上我想知道如何让java“即时”为这些变量生成一个名称?
谢谢!
您确定不想将结果存储在数组或集合中吗? 最接近的是使用Map
。随机生成String
或Integer
密钥,并将其用作Something
值的密钥。
// Before all
Map<String, Something> myMap = new HashMap<String, Something>();
// For each of these
if(condition(TEST) == true){
String name = "VAR" + Math.random() // Don't remember the syntax here
myMap.put(name, new something(this));
}
除非我误解了你的问题,否则你不需要这样做。
Java中的变量是词汇范围的,因为它们只是针对它们存在的块而定义的。在循环的每次迭代中,参数name
将引用不同的对象,并且不会受到它在前一个循环中保留的值的影响。
所以,你只需要在循环中有多少个参数,因为你想在循环中操作属性(可能只有一个),在任何情况下,当你编写代码时, (在编译时),并且与(运行时)数量的TEST对象分离。
如果你不将它们存储或更高版本引用他们,他们都是同一类型的,你可以使用相同的变量为所有的人:
// Outside loop ...
something $name;
// Inside loop ...
if(condition(TEST) == true){
$name = new something(this);
}
如果您没有在循环外使用该变量,则该变量不需要在循环外部声明。 – dsmith 2010-06-24 23:37:06
最简单的方法在ID生成(例如一个Map)就是使用AtomicInteger。
AtomicInteger counter = new AtomicInteger();
Map<String, Something> map = ...
String id = Integer.toString(counter.getAndIncrement(), 36);
map.put(id, new Something());
// later
Something s = map.get("0");
或者使用自然索引的列表会更简单。
List<Something> list = ...
list.add(new Something());
// later
Something s = map.get(0);
显示实际的代码将消除猜测这应该是如何工作的需要/什么它确实... – Eiko 2010-06-24 21:39:22
真的,有没有必要做这样的事情:如果(条件(TEST)==真)只要(条件(TEST))足够。 – wlk 2010-06-24 22:02:49