继承类型转换编译错误

hod*_*r92 0 java inheritance arraylist

我试图理解inhertitance和ArrayList是如何工作的,所以我有以下代码它有一个类,它是保存数据的数据库

public class Database {
    ArrayList<Student> students;
    ArrayList<Course> courses;

    public boolean doesIDExist(ArrayList<RegistrationSystem> array, int id){
       boolean exist = false;
       for (RegistrationSystem array1 : array) {
           if (array1.getId() == id) {
              exist = true;
              break;
           }
       }
       return exist;
    }

    public boolean addStudent(int id, String name, String surname){
       if( doesIDExist(students, id)){
           return false;
       }

       students.add(new Student(id, name, surname));
       return true;
    }

}
Run Code Online (Sandbox Code Playgroud)

学生和课程都是注册系统的子类

public class RegistrationSystem  {
   protected int id;

   public int getId() {
      return id;
   }
}
Run Code Online (Sandbox Code Playgroud)

但是我在这一行中收到错误:

       if( doesIDExist(students, id))
Run Code Online (Sandbox Code Playgroud)

incompatible types: ArrayList< Student > cannot be converted to ArrayList< RegistrationSystem >

我不太明白为什么我会收到这个错误!

Jen*_*ens 5

您的方法期望列表RegistrationSystem不是列表Student.

你必须改为:

public boolean doesIDExist(ArrayList<? extends RegistrationSystem> array, int id){
Run Code Online (Sandbox Code Playgroud)