我有一个我似乎无法解决的编译错误。它给我的消息是它是一个类型不匹配:无法从Object转换为List。 下面我添加了错误所在的方法。
// Read books from file
public void readBooksFromFile() {
if(booksDatabase != null && !booksDatabase.isEmpty()) {
try (ObjectInputStream input = new ObjectInputStream(new FileInputStream(booksDatabase))) {
Books = input.readObject(); // Error here
} catch (IOException e) {
e.printStackTrace();
}
}
}
第二种方法
public ListBook(String booksDatabase) {
this.booksDatabase = booksDatabase;
readBooksFromFile(); // Error here
}
第三种方法
public static void main (String[] args){
// creates ListBook object to keep track of books in the library
ListBook lb = new ListBook("books.dat"); // Error here
// add books to the ListBook object
lb.addBook(new Book("E-commerce", "Kenneth Laudon", "2014", "024449"));
lb.addBook(new Book("Java Programming", "Daniel Liang", "2014", "761312"));
lb.addBook(new Book("EU Internet Law", "Andrej Savin", "2015", "429379"));
//New object
//getter setter methods
LibrarianMenu li = new LibrarianMenu(lb);
//execute the function from the librarian.java
}
如何解决此错误?
答案 0 :(得分:1)
ObjectInputStream返回一个Object;你显然将它分配给了List,它是List类型。不好的主意。
更糟糕的是,我认为你在想象readObject可以遍历集合并将多本书读入List。我认为您应该编写该方法,以便它读取一本书并迭代一个集合,将单独的书籍添加到列表中。
答案 1 :(得分:0)
当您获得mismatch: cannot convert from Object to List.
异常时,这意味着您正在使用类型进行非法操作。这意味着您应该将input
对象转换为相同类型的Books
。