1

作为使用实例变量的练习(请注意,我是一名编程学生,但这是为了满足我自己的好奇心,而不是为了评分作业),我想创建一个未指定数量的类实例并分配一个每个人都有唯一的名字。我的想法是制作一个循环,例如:

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 give System.currentTimeMillis() duplicate

但我不确定如何在使用此方法创建的特定对象中引用实例变量。任何人都可以建议一种方法来做我想要在 Java 中做的事情吗?

非常感谢。

4

5 回答 5

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;
}
于 2011-07-14T15:47:11.010 回答
0

我会使用地图和通用唯一标识符(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

于 2011-07-14T15:46:22.497 回答
0

大声笑,你一定是刚刚开始。
阅读这个 - http://download.oracle.com/javase/tutorial/java/nutsandbolts/arrays.html

你所拥有的大部分都是有道理的,但你需要做-

SomeClass myObject[i] = new SomeClass();

编辑:其他人的选择也可以,但你应该先学会这样做。

于 2011-07-14T15:46:29.657 回答
0

您不能在运行时创建实例变量(缺少编译和加载新类)

为此使用数组或地图

(或者使用像 Groovy 这样运行在 JVM 上的动态语言,它在内部将使用类似 map 的结构)

于 2011-07-14T15:46:35.923 回答
0

我认为您只想使用某种集合,例如数组或数组列表。

List list = new ArrayList();
        int i=1; 
       while (! response.equals("quit"))
    {     list.add(new SomeClass());     
    i++;
} 

然后可以通过在 ArrayList 中获取索引来访问它

list.get(index);
于 2011-07-14T15:48:36.070 回答