我还没有开始对此进行编码,但是我还不知道该怎么做,并想在我花时间解决之前解决。
基本设置是我有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);
}
}
}