重构包后的Object Cast

时间:2014-02-16 22:06:03

标签: java serialization casting refactoring

我遇到了一个错误,我无法弄清楚如何解决。 我在一个名为jdbc的软件包中有一个Login类,它完成了所有数据库工作,现在我已经改变了程序的体系结构,并将所有这些都放在我的类中,并使用实际的GUI视图。 我还将jdbc包重命名为数据库。

现在在我的函数中反序列化一个包含我需要显式转换为LoginBean对象的存储用户数据的文件,编译器现在告诉我以下内容:

Caused by: java.lang.ClassCastException: jdbc.LoginBean cannot be cast to database.LoginBean

如何使编译器转换为正确的编译器,因为jdbc.LoginBean甚至不再存在。

编辑: 一段代码(删除了很​​多代码,因为它们不在这里) -

    import database.LoginBean;

    // INSTANCE VARIABLES ------------------------------------------------------
    private LoginBean bean;

    /**
     * Loads the stored login data from user.dat.
     * @return Returns an ArrayList of Strings containing the retrieved username
     * and password.
     */
    private ArrayList<String> loadLoginData() {
// Load saved data if present
        bean = null;
        ArrayList<String> listData = new ArrayList<>();

        try {
            FileInputStream fIo = new FileInputStream("user.dat");
            ObjectInputStream oIo = new ObjectInputStream(fIo);

            bean = (LoginBean)oIo.readObject();

            oIo.close();
            fIo.close();
        } catch (IOException ie) {
            ie.printStackTrace();
        } catch (ClassNotFoundException ce) {
            ce.printStackTrace();
        }

        listData.add(bean.getUsername());
        listData.add(bean.getPassword());
        saveSelected = bean.isSelected();

        return listData;
    }

1 个答案:

答案 0 :(得分:0)

终于明白了。我迟迟没忘记当然包含我试图反序列化的对象数据的文件仍然指向重构它后不再存在的包jdbc。删除文件后,它会再次正确编译。

男孩,我现在觉得自己像个白痴:-P