2015-04-23 4 views
-7

У меня есть ошибка компиляции, которую я не могу исправить. Это дает мне сообщение о том, что это несоответствие типа: невозможно преобразовать из Object to List. Ниже я добавил методы, которые он говорит ошибка в.Java - ошибка компиляции debug

// 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

Путаный код для чтения. Вы не следуете стандартам кодирования Java. Что такое Книги? Было бы лучше, если бы вы разместили весь класс, а не фрагменты метода. Мы не можем видеть весь контекст. – duffymo

+0

Является ли книга переменной? если это нужно, нужно начинать с нижнего регистра. Вы пытаетесь использовать его: ClassName Books = (Classname) input.readObject(); – Phoenix

+0

Вам нужно указать свой ObjectInputStream -> (ListBook) ObjectInputStream – Jaco

ответ

1

ObjectInputStream возвращает объект; вы, очевидно, присваиваете его Книги, которая имеет тип List. Плохая идея.

Хуже, я думаю, вы думаете, что readObject может перебирать коллекцию и читать несколько книг в список. Я думаю, вы должны написать этот метод, чтобы он читал одну книгу и перебирал коллекцию, добавляя в список отдельные книги.

0

Когда вы получаете исключение mismatch: cannot convert from Object to List., это означает, что вы делаете незаконную операцию с типами. Это означает, что вы должны нанести свой объект input на тот же тип Books.

Смежные вопросы