java - 我的 Java 代码出现错误,但我看不出它有什么问题。帮助?

标签 java arrays inheritance

我得到的错误是在 while 循环中的 fillPayroll() 方法中,它说 payroll.add(employee)。错误说我不能在数组类型 Person 上调用 add() 但 Employee 类继承自 Person 所以我认为这是可能的。谁能为我澄清一下?

import java.io.*;
import java.util.*;

public class Payroll
{   
    private int monthlyPay, tax;
    private Person [] payroll = new Person [1];

        //Method adds person to payroll array
    public void add(Person person)
    {
        if(payroll[0] == null) //If array is empty, fill first element with person
        {
            payroll[payroll.length-1] = person;
        }
        else //Creates copy of payroll with new person added
        {
            Person [] newPayroll = new Person [payroll.length+1];
            for(int i = 0;i<payroll.length;i++)
            {
                newPayroll[i] = payroll[i];
            }
            newPayroll[newPayroll.length] = person;
            payroll = newPayroll;
        }
    }


    public void fillPayroll()
    {
        try
        {
            FileReader fromEmployee = new FileReader ("EmployeeData.txt");
            Scanner data = new Scanner(fromEmployee);
                        Employee employee = new Employee();

            while (data.hasNextLine())
            {
                employee.readData(data.nextLine());
                payroll.add(employee);
            }

        }
        catch (FileNotFoundException e)
        {
            System.out.println("Error: File Not Found");
        }

    }

}

最佳答案

使用 ArrayList 而不是使用数组。你会更快乐。

数组一旦创建就无法调整大小。所有用于管理的样板文件均由 ArrayList 完成。在元素中使用带有子类的数组还有其他问题(围绕协方差)。可能您唯一需要更改的行是:

private final List<Person> payroll = new ArrayList<Person>();

List 有一个 add() 方法。数组没有。

关于java - 我的 Java 代码出现错误,但我看不出它有什么问题。帮助?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2516908/

相关文章:

java - 方法类型参数化在 for 循环中不起作用

java - 返回变量 java 时遇到问题

python - 基于另一个列表中的数字的列表列表

python - 将 python 输出为 python 可读的格式

arrays - 如何使这个 PowerShell 函数返回纯字符串,而不返回字符串数组?

C#防止派生类中的new修饰符隐藏基类方法

java - 在 JasperReports 和 MySQL 中将数字转换为本地 (UTF8) 孟加拉数字

java - 上传pdf文件

c# - 将类转换为派生类

javascript - 回调引用和继承javascript