Java对象数组相互覆盖

标签 java arrays

我有三个类 MainProcessEmployee。我的问题是,最后一个对象数组总是覆盖第一个。我认为逻辑上没有问题,我只是简单地使用getters和setters。

    public class Main {

        public static void main(String args[]){
            Process p = new Process();

            p.setEmployeeList(p.generate());

            p.setExternalEmployeeList(p.generate());

            for(int i=0; i<5; i++){
                System.out.println(p.getEmployeeList()[i].getID());
            }

            System.out.println();

            for(int i=0; i<5; i++){
                System.out.println(p.getExternalEmployeeList()[i].getID());
            }

        }

    }

--

import java.util.Random;

public class Process {

    private int rndTemp;
    private int numberOfDice = 5;
    private Random random = new Random();
    public Employee[] employeeList = new Employee[5];
    public Employee[] externalEmployeeList = new Employee[5];
    private Employee[] tempList = new Employee[5];

    public Employee[] generate(){
        for(int i=0; i<numberOfDice; i++){
            rndTemp = random.nextInt((6 - 1) + 1) + 1;
            Employee emp = new Employee(rndTemp);

            tempList[i] = emp;
        }
        return tempList;

    }

    public Employee[] getEmployeeList(){
        return employeeList;

    }

    public Employee[] getExternalEmployeeList(){
        return externalEmployeeList;

    }

    public void setExternalEmployeeList(Employee[] externalEmployeeList){
        this.externalEmployeeList = externalEmployeeList;
    }

    public void setEmployeeList(Employee[] employeeList){
        this.employeeList = employeeList;
    }

}

--

public class Employee {

    public int empID;

    public Employee(int empID) {
        this.empID = empID;
    }


    public void setID(int empID) {
        this.empID = empID;
    }

    public int getID() {
        return empID;
    }
}

最佳答案

你必须把

Employee[] tempList = new Employee[5];

在您的生成方法中,它将按预期工作。

否则,您将只传递对数组的引用,而下一次您将覆盖同一个数组。

此外,其他两个数组不需要初始化,因为它们将被分配给新创建的数组。

关于Java对象数组相互覆盖,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27561902/

相关文章:

java - 抽象 compareTo 方法未被覆盖

java - 如何使用 Java 流将一组对象转换为对象字段到一组字段的映射?

java - 如何从动态插入属性文件/资源​​包中的键值中的数字中删除逗号?

arrays - |MongoDB|如何排序和限制嵌入式数组?嵌入式数组分页

javascript - onClick 过滤数组并渲染数组中的剩余项目

php - 只是无法让 for 循环在 Php 中生成所需的数组

java - 具有存储库工厂的存储库模式

java - 嵌套循环递减数

JavaScript 数组访问问题

ios - Swift:创建具有空字段的可变数组