Java - 编译错误调试

时间:2015-04-23 09:09:08

标签: java compiler-errors

我有一个我似乎无法解决的编译错误。它给我的消息是它是一个类型不匹配:无法从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
     }

如何解决此错误?

2 个答案:

答案 0 :(得分:1)

ObjectInputStream返回一个Object;你显然将它分配给了List,它是List类型。不好的主意。

更糟糕的是,我认为你在想象readObject可以遍历集合并将多本书读入List。我认为您应该编写该方法,以便它读取一本书并迭代一个集合,将单独的书籍添加到列表中。

答案 1 :(得分:0)

当您获得mismatch: cannot convert from Object to List.异常时,这意味着您正在使用类型进行非法操作。这意味着您应该将input对象转换为相同类型的Books