【问题标题】:Java - compilation error debugJava - 编译错误调试
【发布时间】:2015-07-01 08:40:18
【问题描述】:

我有一个似乎无法修复的编译错误。它给我的信息是类型不匹配:无法从对象转换为列表。 下面我添加了它说错误所在的方法。

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

如何解决这个错误?

【问题讨论】:

  • 令人困惑的代码阅读。您没有遵循 Java 编码标准。什么是书籍?如果您发布整个课程而不是方法 sn-ps 会更好。我们无法看到整个上下文。
  • 图书是变量吗?如果是它需要以小写字母开头。您是否尝试过强制转换:ClassName Books = (Classname)input.readObject();
  • 你需要转换你的 ObjectInputStream--> (ListBook)ObjectInputStream
  • 您应该将转换添加到列表类型:

标签: java compiler-errors


【解决方案1】:

ObjectInputStream 返回一个对象;您显然将其分配给 List 类型的 Books。坏主意。

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

【讨论】:

    【解决方案2】:

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

    【讨论】:

      猜你喜欢
      • 2011-05-14
      • 2020-08-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多