Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/359.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 创建具有唯一名称的实例_Java - Fatal编程技术网

Java 创建具有唯一名称的实例

Java 创建具有唯一名称的实例,java,Java,我想在一个循环中创建很多实例,但当ı尝试串接以生成唯一名称时,Java不允许该操作 for (Classroom classTmp : classrooms) { String s = "sessionClassroom" + count; SessionClassroom s = new SessionClassroom(classTmp); } 如何生成唯一的名称来创建SessionClass

我想在一个循环中创建很多实例,但当ı尝试串接以生成唯一名称时,Java不允许该操作

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

            SessionClassroom s  = new SessionClassroom(classTmp);



        }

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

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

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值与教室数量(计数)一样多,那么您应该使用类似列表的数据结构:

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

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

    list.add(new SessionClassroom(classTmp));
}
List List=new ArrayList();
用于(教室类TMP:教室)
{
字符串s=“sessionClassroom”+计数;
添加(新课时教室(classTmp));
}

根据访问成员的方式,最好将其存储为ArrayList

差不多

ArrayList<SessionClassroom> lSessions = new ArrayList<SessionClassroom>();

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

如果您希望按名称访问会话,则应使用映射来保存会话:

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);
}

您将
s
用作字符串变量,再次用作SessionClassroom变量,这是不可能的,也没有任何意义。如果你描述了你做这件事的目的并展示了你真正想要完成的事情,我们可能会帮助你展示如何去做。谢谢你,但我不知道如何解决这个问题。对不起,我的java知识,但我想生成变量名为“s”的SessionClass对象.我不想一次又一次地写SessionClassroom SessionClassroom 1,2,3,4=新SessionClassroom(classTmp);这并不能解决他的问题。他希望根据字符串动态命名会话,而AFAIK无法这样做。您几乎可以更改为任何您想要的。您只需确保String变量和SessionClassroom变量具有不同的名称。如果要保留
SessionClassroom s
,则应将
String s
重命名为类似于
String str
的名称。它们不能被称为相同的。好吧,如果我理解你的意思,你应该使用数组。
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);
}
classroomSessions.get("sessionClassroom3").doSomething();