我想基于Position枚举类型创建100个新实例。在switch case语句中,我有5种情况,并且要基于枚举类型创建相应的Employee实例。我的问题是,我不知道每次创建新实例时如何创建和分配新的变量名,例如:worker1,worker2,worker3。到目前为止,这是我提出的内容:

final String randomVariableName() {
        int count = 1;
        String s = "worker" + count;
        count++;
        return s;
    }

final Position randomPosition(){
    return positions[random.nextInt(positions.length)];
}
public void run() {
    for (int i = 1; i <= 100; i++) {
        String randomName = "worker" + i;
        Position p = randomPosition();
        switch (p) {
            case PROJECT_LEADER:
                ProjectLeader randomVariableName() = new ProjectLeader(p, randomName, 5000);
            case DEVELOPER_LEADER:
                DeveloperLeader randomVariableName() = new DeveloperLeader(p, randomName, 1000);
        }
    }


但是这样,我不能调用randomVariableName()方法,因为:Variable 'randomVariableName' is already defined in the scope

我什至不确定这将是一个好的解决方案。我只需要一种方法,就可以在切换情况下创建100个唯一的引用变量名称。

最佳答案

您不能在Java运行时创建新的变量名称。您可以做的是使用数组或集合来存储实例。

Employee employees[] = new Employee employees[100];

for (int i = 0; i < 100; i++) {
        String randomName = "worker" + i;
        Position p = randomPosition();
        switch (p) {
            case PROJECT_LEADER:
                employees[i] = new ProjectLeader(p, randomName, 5000);
                break;
            case DEVELOPER_LEADER:
                employees[i] = new DeveloperLeader(p, randomName, 1000);
                break;
        }
    }


循环后,您可以通过employees[0]访问employees[99]以获得100个实例。

比使用原始数组更合适的是集合,例如您将实例添加到的ArrayList<Employee>

另外-切记在switch()内以中断的方式终止case语句

关于java - 如何在for循环和switch-case中生成100个不同的引用变量?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/42829288/

10-09 12:36