java - 将子类添加到 java 数组并稍后将它们拉出来

标签 java arrays

我目前正在执行一项任务,正在创建员工数据库。

我现在所处的位置是我创建了一个抽象类 Employee。由此我有了 HourlyEmployee、SalaryEmployee 和 CommissionEmployee 的子类。

对于创建任何类型的新员工时的分配,都需要存储在数组中。然后我必须能够根据类型列出员工。传递给 addEmployee() 的 ty int 来自另一个类中的 main 方法,其中菜单要求您为所需的员工类型选择 1-3。

public class EmployeeManager{

    private Employee[] employees;
    private final int employeeMax = 100;
    private int currentEmployees;


    public EmployeeManager()
    {
        employees = new Employee[employeeMax];
        currentEmployees = 0;

    }

    public void addEmployee(int ty, String fn, String ln, char mi, char gen, int empNum, boolean ft, double p)
    {

        if(ty == 1)
        {
            employees[currentEmployees] = new HourlyEmployee(fn, ln, mi, gen, empNum, ft, p);

            currentEmployees++;
        }
        else if(ty == 2)
        {
            employees[currentEmployees] = new SalaryEmployee(fn, ln, mi, gen, empNum, ft, p);

            currentEmployees++;
        }
        else if(ty == 3)
        {
            employees[currentEmployees] = new CommissionEmployee(fn, ln, mi, gen, empNum, ft, p);

            currentEmployees++;
        }
    }

现在,这对于将员工添加到数组中来说效果很好,但是它缺少一种识别数组中员工类型的方法。稍后我必须实现打印出每小时、工资或佣金类型的所有员工的方法。如何识别数组中的员工,以便稍后打印该类型所有员工的列表?

public void listAll()
{
    if(currentEmployees == 0)
    {
        System.out.println("\nNo Employees.");
    }
    else
    {
        for (int i=0; i < employees.length; i++)
        {
            if(employees[i] != null)
            {
                System.out.print(employees[i]);
            }
        }
    }

}

这是我打印出任何类型的所有员工的方法。在每个类中,我编写了一个 toString() 方法,用于按照我需要的方式格式化输出。

最佳答案

如果您确实需要知道对象的类型,可以这样做:

if (employees[i] instanceof HourlyEmployee) {
// Hourly employee
}

关于java - 将子类添加到 java 数组并稍后将它们拉出来,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19105612/

相关文章:

javascript - 在 jQuery 中创建 JSON 对象数组

java - Java 中哪种编码风格是首选?

java - 按钮未从循环中出现

java - 查找整数是否为整数之和之一的有效方法

java - 在 Java 中,如何从另一个数组中获取数组名称后将其用作数组?

javascript - 遍历数组只显示最后一个值

java - 将 float 组发送到部署在 Google Cloud ML-Engine 上的 Tensorflow 模型

java - Jsoup 白名单允许评论

Java 用一维数组填充二维数组

java - jpa 将复合对象仅映射到一张表