我还没有开始对此进行编码,但是我还不知道该怎么做,并想在我花时间解决之前解决。
基本设置是我有4个类,一个类称为MediaItem,然后其他三个扩展Mediaitem的类称为Book,VideoRecord和AudioRecord。
每个变量都有这些变量的get和set方法
callNumber
copyNumber
借款人
格里高利·卡伦德
现在说我有一个MediaItems数组,其中包含Books,VideoRecord,AudioRecords对象,但被该数组视为MediaItem
现在假设数组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){}
如在方法中,我希望专门返回一个Books数组,但是错误是这样的
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;
}
我将运行不兼容的类型错误,因为无法将MediaItem分配给Book对象
我要如何解决这个问题,因为目标是归还书籍
原谅的错误我只是以示例的方式输入问题,但应该可以使您明白要点
所以
// find and match borrower of object in MediaItem array (completed)
// add 14 days using GregorianCalender (completed)
// assign MediaItem to type book and return array(error)

最佳答案

您可以利用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);
        }
    }
}

09-06 19:36