我想在循环中创建大量实例但是当ı尝试使用字符串连接生成唯一名称时Java不允许操作。我的观点在这里
for (Classroom classTmp : classrooms)
{
String s = "sessionClassroom" + count;
SessionClassroom s = new SessionClassroom(classTmp);
}
如何生成唯一的名称来创建SessionClassroom对象?感谢您的帮助。
答案 0 :(得分:1)
您获得的错误是因为对象被称为相同:
String s = "sessionClassroom" + count;
SessionClassroom s = new SessionClassroom(classTmp);
问题在于它们都被称为s
。连接操作("sessionClassroom" + count
)是完全正确的。
要解决此问题,您应重命名String s
或SessionClassroom 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();