如果我不在java中将非可序列化字段标记为瞬态会发生什么?

时间:2011-11-03 16:19:14

标签: java

public class PersistentAnimation implements Serializable, Runnable
         {
         private Thread animator;
         private int animationSpeed;
         public PersistentAnimation(int animationSpeed)
        {
         this.animationSpeed = animationSpeed;
        animator = new Thread(this);
           }
               public void run()
          {
             while(true)
            {
               // do animation here
         }

这里的动画师没有标记为瞬态?它会继续存在吗?

2 个答案:

答案 0 :(得分:5)

不,因为Thread没有实现Serializable接口。尝试序列化此类的实例时,您将遇到异常。

直接来自javadoc of Serializable

  

遍历图形时,可能遇到没有的对象   支持Serializable接口。在这种情况下   将抛出NotSerializableException并将标识该类   不可序列化的对象。

答案 1 :(得分:1)

Java会尝试序列化它,看到它不是Serializable,而是抛出NotSerializableException