作为一个练习(注意我是一个编程学生,但这是一个练习,以满足我自己的好奇心,而不是分级作业)使用实例变量,我想创建一个未指定数量的类的实例并为每个人分配一个唯一的名称。我的想法是建立一个循环,如:
int i=1;
while (! response.equals("quit")){
SomeClass object_i = new SomeClass();
i++;
...
}
这将允许程序根据用户的需要创建尽可能多的SomeClass实例,然后能够引用每个实例中的实例变量,例如:
for (i=1; i <= count; i++){
sum += object_i.nonStaticInstanceVariable;
}
在此线程中使用AtomicLong建议使用唯一标识符名称: java for loop executes too fast gives System.currentTimeMillis() duplicate
但我不确定如何在使用此方法创建的特定对象中引用实例变量。任何人都可以提出一种方法来做我在Java中尝试做的事情吗?
非常感谢。
答案 0 :(得分:1)
在您的第一个for循环中,您正在创建SomeClass
的实例,但您没有对它们执行任何操作。你想要做的是将它们收集到某种类型的集合中,以便稍后可以参考它们,如下所示:
int i=1;
List<SomeClass> classes = new ArrayList<SomeClass>();
while (! response.equals("quit")){
classes.Add(new SomeClass());
i++;
...
}
现在,您可以遍历您的收藏集并对其执行一些有用的操作:
for (SomeClass someClass : classes) {
sum += someClass.nonStaticInstanceVariable;
}
答案 1 :(得分:0)
我会使用地图和universally unique identifier(UUID)。有关示例,请参阅java.util.UUID。
Map<UUID,SomeClass> map = new HashMap<UUID,SomeClass>();
for (int i=0;i<1000000;i++) {
UUID key = UUID.randomUUID()
map.put(key, new SomeClass());
}
现在,如果用户有UUID
,那么他们可以获得对相应SomeClass
答案 2 :(得分:0)
你所拥有的大部分内容都有道理,但你需要这样做 -
SomeClass myObject[i] = new SomeClass();
编辑:其他人的选择也会奏效,但你应该学会这样做第一次。
答案 3 :(得分:0)
您无法在运行时创建实例变量(缺少编译和加载新类)
使用数组或地图
(或者使用像在JVM上运行的Groovy这样的动态语言,它在内部将使用类似地图的结构)
答案 4 :(得分:0)
我认为你只想使用某种集合,例如数组或arraylist。
List list = new ArrayList();
int i=1;
while (! response.equals("quit"))
{ list.add(new SomeClass());
i++;
}
然后可以通过在ArrayList
中获取索引来访问它list.get(index);