使用唯一名称创建实例

时间:2014-04-29 20:39:25

标签: java

我想在循环中创建大量实例但是当ı尝试使用字符串连接生成唯一名称时Java不允许操作。我的观点在这里

    for (Classroom classTmp : classrooms)
        {
            String s = "sessionClassroom" + count;

            SessionClassroom s  = new SessionClassroom(classTmp);



        }

如何生成唯一的名称来创建SessionClassroom对象?感谢您的帮助。

3 个答案:

答案 0 :(得分:1)

您获得的错误是因为对象被称为相同:

String s = "sessionClassroom" + count;

SessionClassroom s  = new SessionClassroom(classTmp);

问题在于它们都被称为s。连接操作("sessionClassroom" + count)是完全正确的。

要解决此问题,您应重命名String sSessionClassroom s以使用其他名称。例如:

String s = "sessionClassroom" + count;

SessionClassroom sc  = new SessionClassroom(classTmp);

编辑: 如果您想要的是从for循环外部访问的SessionClassroom值与教室数量(count)一样多,那么您应该使用像List这样的数据结构:

List<SessionClassroom> list = new ArrayList<SessionClassroom>();

for (Classroom classTmp : classrooms)
{
    String s = "sessionClassroom" + count;

    list.add(new SessionClassroom(classTmp));
}

答案 1 :(得分:0)

根据您希望如何访问成员,最好将其存储为ArrayList。

这样的东西
ArrayList<SessionClassroom> lSessions = new ArrayList<SessionClassroom>();

然后在循环放置

lSessions.add(new SessionClassroom(classTmp));

这很大程度上取决于您希望如何访问会话。

答案 2 :(得分:0)

如果要按名称访问会话,则应使用地图来保存会话:

Map<String, ClassroomSession> classroomSessions = new TreeMap<String, ClassroomSession>();
int count = 0;
for (Classroom classTmp: classrooms) {
    count++;
    String name = "sessionClassroom" + count;
    SessionClassroom s  = new SessionClassroom(classTmp);
    classroomSessions.put(name, s);
}

然后访问sessionClassroom3,例如:

classroomSessions.get("sessionClassroom3").doSomething();