当前位置: 首页 > 面试题库 >

为什么我实现了'Serializable'却得到NotSerializableException异常

壤驷华辉
2023-03-14
问题内容

我已经在“ userInfo”类中实现了Serializable。我仍然感到异常。这是输出控制台-

java.io.WriteAbortedException: writing aborted; java.io.NotSerializableException: chatservernazmus.User
        at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1333)
        at java.io.ObjectInputStream.readObject(ObjectInputStream.java:351)
        at java.util.ArrayList.readObject(ArrayList.java:593)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
        at java.lang.reflect.Method.invoke(Method.java:597)
        at java.io.ObjectStreamClass.invokeReadObject(ObjectStreamClass.java:974)
        at java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1849)
        at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1753)
        at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1329)
        at java.io.ObjectInputStream.defaultReadFields(ObjectInputStream.java:1947)
        at java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1871)
        at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1753)
        at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1329)
        at java.io.ObjectInputStream.readObject(ObjectInputStream.java:351)
        at chatservernazmus.Server.getAllUser(Server.java:74)
        at chatservernazmus.Server.<init>(Server.java:44)
        at chatservernazmus.Main.main(Main.java:11)

这是我的两节课:

public class userInfo implements Serializable{
    public ArrayList<User> allUser=new ArrayList<User>();

    public void addUser(User e){
        allUser.add(e);
    }
    public ArrayList<User> getAllUser(){
     return allUser;
    }
}


public class User{
    public String userName="";
    public String password="";
    public String statusMessage="";
    public ArrayList<String> friend=new ArrayList<String>();
    public ArrayList<String>offlineMessage=new ArrayList<String>();

    public User(String username,String password,String message){
        userName=username;
        password=password;
        statusMessage=message;
    }

    public void setStatusMessage(String message){
        statusMessage=message;
    }
    public void addFriend(String fr){
        friend.add(fr);
    }
    public ArrayList<String> getOfflineMessage(){
        ArrayList<String> str=new ArrayList<String>();
        offlineMessage.clear();
        return str;
    }
}

问题答案:

为什么我实现了’Serializable’却得到NotSerializableException异常

你还没有

java.io.NotSerializableException:chatservernazmus.User公共类userInfo实现了Serializable
{公共类User {

User类必须是可序列化也是如此。



 类似资料:
  • 问题内容: @Entity public class Husband implements Serializable { 广义上是什么? 类为什么实现接口? 为什么丈夫成员一个人只有@OnetoOne(mappedBy =“ Wife”),而妻子成员却没有@OnetoOne(mappedBy =“ husband”) 问题答案: 广义上讲,序列化是Java为开发人员提供的将任何对象的状态持久保存到

  • 问题内容: 在我对Servlet的理解中,该Servlet将由Container实例化,其方法将被调用一次,并且Servlet将像单例一样存活,直到JVM关闭。 我不希望我的servlet被序列化,因为当应用服务器恢复或正常启动时,它将被重新构造。Servlet不应该包含特定于会话的成员,因此将其写入磁盘并重新实例化是没有意义的。有实际用途吗? 我担心的是,我在其中放置了一些不可序列化的字段,然后

  • 我编写了这段代码,将整个以10为基数的数字转换成二进制。我相信代码就是它所需要的一切,但我无法让工作。 我在这个网站和其他网站上花了几个小时,尝试了无数次的修改,但都没有用。 我已经让代码无错误地编译,但一旦我运行它并输入程序就会崩溃。 下面是代码: 这些是java在我输入数字时抛出的异常。 我希望这是足够的信息。

  • 我正在学习“放心框架”。 我使用http://ziptasticapi.com免费的API为我的演习。 当我打电话: 我得到以下字符串: {“国家”:“美国”、“州”:“正义与发展党”、“城市”:“阿达克”} as响应字符串值。 当我尝试时: 我突然想到: JAVAlang.IllegalStateException:无法分析对象,因为响应中未指定支持的内容类型。内容类型为“文本/html”;字符

  • 问题内容: public class Category { 在正在生成。 问题答案: 当您执行时,您称呼孩子们的。这里没有问题,只不过您在这里调用了父对象。这将称呼孩子,等等。 不错的无限循环。 摆脱它的最好方法是将您的方法更改为: 这样,您将不打印parentCategory,而仅显示其名称,不显示无限循环,不显示StackOverflowError。 编辑: 正如博洛在下面说的那样,您将需要检

  • 请问为什么第13行的错误是未报告的异常,必须捕获pr声明要抛出