序列化Java对象而不实现可序列化接口

欲望PRG

我有以下代码。

动物.java

   public class Animal{
        String name;
        int age;

        public Animal(){
            name="default name";
            age=0;
        }

    }

  public class Cat extends Animal{
        int legs;
        public Cat(){
            super();
            this.legs=10;
        }
    }

Test.java

import java.io.*;

public class Test{

    public static void main(String[] args){

        try{
            Cat c1 = new Cat();
            FileOutputStream fileStream = new FileOutputStream("myobjects.ser");
            ObjectOutputStream objectStream = new ObjectOutputStream(fileStream);
            objectStream.writeObject(c1);
        }catch(Exception e){
            e.printStackTrace();
        }   

    }
}

该代码可以正常工作。没有异常抛出。我期待一个异常,因为cat类尚未实现可序列化的接口。

为什么我的代码有效?

ass子手

该程序确实会引发异常,您只是没有在正确的位置查看。

该方法e.printStackTrace()打印到System.err(STDERR)流,而不是标准控制台输出(STDOUT)。您很有可能没有看到正确的流。大多数IDE都会显示,System.err但我不能代表您。

解决方法是致电System.out.println(e.getMessage())这会将异常消息打印到STDOUT。如果要打印堆栈跟踪,应调用e.printStackTrace(System.out)

更好的做法是找到一种查看System.err(STDERR)流的方法,因为通常System.out用于正常程序输出,而不是错误。您可以调用System.err.println(e.getMessage())以获取异常消息,并e.printStackTrace(System.err)获取堆栈跟踪。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

为什么如果我不实现可序列化我仍然可以序列化一个对象?

来自分类Dev

为什么如果我不实现可序列化,我仍然可以序列化一个对象?

来自分类Dev

如果父类不实现可序列化,则序列化子类?

来自分类Dev

克隆可序列化对象-JAVA

来自分类Dev

Java可序列化对象

来自分类Dev

为什么类需要实现可序列化的标记接口进行序列化?

来自分类Dev

实现了 Serializable 接口,但类对象仍然不可序列化

来自分类Dev

反序列化接口的实现

来自分类Dev

序列化对象Java

来自分类Dev

Java序列化对象与非序列化对象

来自分类Dev

接口实现和Java序列化

来自分类Dev

如何实现可序列化的交易?

来自分类Dev

如何实现可序列化?

来自分类Dev

序列化具有接口的对象

来自分类Dev

可序列化对象的不可序列化成员是否已序列化?

来自分类Dev

传递可序列化对象的意图

来自分类Dev

可序列化对象上的InvalidClassException

来自分类Dev

可序列化对象上的InvalidClassException

来自分类Dev

使 cassandra 对象 json 可序列化

来自分类Dev

接口的Jackson序列化

来自分类Dev

Java序列化

来自分类Dev

Java对象序列化嵌套对象

来自分类Dev

Java对象序列化嵌套对象

来自分类Dev

使用XML序列化序列化接口列表

来自分类Dev

使EntityManager可序列化

来自分类Dev

用Java序列化Canvas对象

来自分类Dev

Java序列化不同的对象

来自分类Dev

Java序列化和重复对象

来自分类Dev

Java的Apache Spark对象序列化