Java 如何将MediaItem类型的对象写入book类型

Java 如何将MediaItem类型的对象写入book类型,java,compiler-errors,Java,Compiler Errors,我还没有真正开始编写代码,但我还不知道怎么做,我想在我真正投入时间之前解决这个问题 基本设置是我有4个类,一个类叫做MediaItem,然后是另外三个扩展MediaItem的类叫做Book、VideoRecord、AudioRecord。 每个变量都有get和set方法 电话号码 文号 借贷者 格雷戈里安卡伦德 现在让我们假设我有一个MediaItems数组,其中包含书籍、视频记录、音频记录对象,但数组将其视为MediaItem 现在假设array MediaItem上有每个对象的3个副本 我的

我还没有真正开始编写代码,但我还不知道怎么做,我想在我真正投入时间之前解决这个问题

基本设置是我有4个类,一个类叫做MediaItem,然后是另外三个扩展MediaItem的类叫做Book、VideoRecord、AudioRecord。 每个变量都有get和set方法 电话号码 文号 借贷者 格雷戈里安卡伦德

现在让我们假设我有一个MediaItems数组,其中包含书籍、视频记录、音频记录对象,但数组将其视为MediaItem 现在假设array MediaItem上有每个对象的3个副本

我的问题是,我想写这个方法,但不知道如何正确地分配它

/**
     * Renews all books checked out to the given borrower.
     * 
     * @param borrower the borrower
     * @param currentDate the date the renewal was requested
     * @return an array containing the books that were renewed
     */
public Book[] renew(String borrower, GregorianCalendar currentDate){}
假设我已经使用了for循环并实现了if语句,例如

items[i].getBorrower.equals(borrower){}
正如在方法中一样,我希望返回一个特定的书籍数组,但错误是

public final int MAX_ITEMS = 500;
Books[] book = new Book[MAX_ITEMS];
//forloop here
for( int i = 0; i < MediaItem.length; ++i){}
if (MediaItem[i].getBorrower.equals(borrower))
{
// args to add to date here
// the problem below
   book[i] = MediaItem[i];
}
return book;
}

您可以利用Java的泛型,但可能需要使用列表而不是数组,因为您无法在Java中创建泛型数组

class Book extends Media {}

class Media {
    String borrower;
}


class Main {

    public static void main(String[] args) {
        List<Media> media = new ArrayList<>();
        media.add(new Media());
        media.add(new Book());
        for (Media medium : media) {
            System.out.println(medium.borrower);
        }
    }
}
类目扩展媒体{}
班级媒体{
借款者;
}
班长{
公共静态void main(字符串[]args){
List media=new ArrayList();
添加(新媒体());
添加(新书());
用于(媒体:媒体){
System.out.println(中等借款人);
}
}
}

它需要在一个数组中吗?为什么不使用列表?我想我知道我需要做什么,但我不知道如何将其放入代码中,首先是的,我希望它保持为一个数组,有人知道如何向下转换吗?还是向上看?
class Book extends Media {}

class Media {
    String borrower;
}


class Main {

    public static void main(String[] args) {
        List<Media> media = new ArrayList<>();
        media.add(new Media());
        media.add(new Book());
        for (Media medium : media) {
            System.out.println(medium.borrower);
        }
    }
}