静态变量不属于对象,属于类,不能被序列化.还有瞬态的变量也不能被序列化.序列化保存的是对象的状态,而静态变量是类的状态。
1.基本类型的数据可以直接序列化
2.对象要被序列化,它的类必须要实现Serializable接口;如果一个类中有引用类型的实例变量,这个引用类型也要实现Serializable接口。
3.可以用这个代码:ObjectOutputStream out = new ObjectOutputStream(new FileOutputStream("seria"));
但是不能用这个代码:ObjectOutputStream out = new ObjectOutputStream(new FileOutputStream("seria",true));
4.如果对象的引用类型没有实现序列化,但是还是想将这个对象序列化,那么可以将对象中用到的那个引用类型对象设置为transient类型。
(如果A包含了对B的引用,那么在序列化A的时候也会将B一并地序列化;如果此时A可以序列化,B无法序列化,那么在序列化A的时候就会发生异常,这时就需要将对B的引用设为transient,该关键字表示变量不会被序列化。)
注: transient是java语言的关键字,变量修饰符,如果用transient声明一个实例变量,当对象存储时,它的值不需要维持。换句话来说就是,用transient关键字标记的成员变量不参与序列化过程。
5.如果用transient修饰引用类型对象,则这个引用类型的对象不会保存,那么如果希望保存下来又如何实现呢?
6.如果一个类没有实现Serializable接口,但是它的父类实现了,那么这个类也可以序列化.
7.如果一个类实现了Serializable接口,但是它的父类没有实现,那么这个类可以进行序列化吗?
答案是可以的,因为超类Object类没有实现Serializable接口,所以你懂了吧,但是会有个问题,你需要在父类中是实现默认的构造方法,否则会报异常:no validconstructor。
分享到:
相关推荐
本文将深入探讨Java序列化的各个方面,包括其概念、原理以及实际应用中的注意事项。 #### 一、什么是Java序列化? Java序列化是指将一个Java对象的状态转换为字节流,以便于存储或通过网络进行传输的过程。当接收...
### 使用Java序列化实现文件备份工具的知识点解析 #### 一、Java序列化的概念与作用 **Java序列化**是一种将对象的状态(即其成员变量)转换为可以存储或传输的形式的过程。序列化的主要用途包括: 1. **持久化**...
在Java编程中,对象的序列化和反序列化是一项重要的技术,主要用于持久化对象状态,即把对象转换为字节流以便存储或在网络中传输。这一过程涉及到以下几个关键知识点: 1. **序列化的作用**: 序列化的主要目的是...
**注意事项** 1. **序列化安全性**:序列化可能导致安全问题,因为恶意用户可能利用序列化漏洞执行任意代码。因此,序列化时应避免序列化敏感数据和执行任何非预期的方法。 2. **版本控制**:当对象的类结构发生...
Java集合在使用时需要注意以下几点: * fail-fast与fail-safe:Java集合在遍历时可能会抛出ConcurrentModificationException异常,这是因为集合在遍历时可能会被修改。fail-fast机制将抛出异常,而fail-safe机制将...
这两个补丁主要解决以下几点: 1. **安全性增强**:通过修改WebLogic的序列化机制,防止未授权的代码执行。补丁会强化对反序列化数据的验证,避免恶意输入导致的代码注入。 2. **漏洞修复**:针对已知的序列化漏洞...
**AIDL的使用注意事项**包括以下几点: 1. **定义接口**:首先在服务端创建一个AIDL文件,定义接口和其方法。每个方法都必须指定返回类型和参数类型,且这些类型必须是Android系统支持的或已实现序列化的。 2. **...
- **序列化与反序列化**:在序列化和反序列化过程中,反射机制用于查找和恢复对象的状态。 4. **示例分析** 以给定的`LinkedList`类为例,它继承自`AbstractSequentialList`,实现了`List`, `Queue`, `Cloneable`...
**14.6 使用互斥锁的注意事项** - 死锁问题:多个线程互相等待对方释放锁导致无法继续执行。 #### 十四、标准I/O流与文件 **15.1 对文件的操作** - 文件读写操作通常使用File类和相关的流类。 **15.2 处理跨...
游戏状态(如玩家位置、方块类型等)需要实时同步,这就涉及到序列化和反序列化技术。 4. **多线程**:为了保证游戏流畅,开发者可能采用了多线程技术。一条线程处理用户的输入,另一条线程负责方块的自动下落,...
- **禁用特定JVM标志**:如果代码或依赖项中使用了Java对象序列化或反射,则应确保在`neo4j-wrapper.conf`文件中禁用了`-XX:+TrustFinalNonStaticFields`标志。 #### 2. 在Java应用程序中嵌入Neo4j 在Java应用程序...
本文将深入探讨Jackson库在JSON操作中的核心概念、使用方法以及注意事项。 一、Jackson库简介 Jackson是由 FasterXML 组织开发的一套开源JSON处理库,包括`jackson-core`、`jackson-databind`和`jackson-...
标题“Java和C#通过DES加密得到相同...总结起来,标题和描述中的知识点涵盖了DES加密算法的基础知识,以及在Java和C#中实现相同加密结果的关键步骤和注意事项。理解和掌握这些内容对于跨平台的数据安全通信至关重要。
#### 1.20 Java序列化 - **Serializable接口**: - 标记类可以被序列化。 - 实现此接口的类可以使用 `ObjectOutputStream` 和 `ObjectInputStream` 进行对象的序列化和反序列化。 - **序列化注意事项**: - 序列化...
总结起来,“java反射笔记”涵盖了Java反射的基本概念、使用方式以及在Eclipse环境下的一些注意事项。通过对`Class`、`Method`和`Field`对象的操作,我们可以实现动态编程,增强代码的灵活性,但同时也需要注意性能...
4.24 对象序列化:对象序列化是将对象状态转换为可以保存或传输的过程。 4.25 Thread线程类及多线程:Java提供了丰富的API支持多线程编程。 4.26 Socket网络编程:Java通过Socket API支持网络通信。 4.27 线程池:...
4. **序列化与反序列化**:在网络通信中,数据通常需要转换为可传输的格式,如 JSON 或 XML,这涉及到了序列化和反序列化技术。 5. **数据库交互**:可能使用 JDBC 进行数据库操作,如用户信息的存储和检索。 6. *...
3. **序列化/反序列化**:在序列化过程中,需要读取对象的字段信息,反序列化时需要创建对象实例并设置字段值。 4. **代码生成**:根据某些规则生成新的 Java 代码,再将其编译成类文件。 5. **测试工具**:测试框架...
6. **什么是java序列化,如何实现java序列化** - **序列化**: 是将对象的状态转换为字节流的过程,以便可以存储在文件或数据库中,或在网络上传输。Java提供了内置的支持来实现对象的序列化。 - **实现序列化**: ...
- **序列化的定义、实现和注意事项**:序列化是将对象的状态转化为字节序列的过程,可以通过实现`Serializable`接口来使类具备序列化能力。 - **使用IO流完成文件夹复制**:通过递归方法遍历文件夹中的所有文件和子...