Java:序列化和反序列化

一、序列化和反序列化
C# 
return Json() --> json字符串--> ajax把Json字串串转为Json对象
请求 ajax发送Json对象 -->json字符串--> Controller.action(类 实例)进行了反序列化

目的:把对象进行网络传输或存储

对象序列化的目标是将对象保存到磁盘中,或允许在网络中直接传输对象。
   对象序列化机制允许把内存中的Java对象转换成平台无关的二进制流,
   从而允许把这种二进制流持久地保存在磁盘上,通过网络将这种二进制流传输到另一个网络节点。
   其他程序一旦获得了这种二进制流(无论是从磁盘中获取的,还是通过网络获取的),
   都可以将这种二进制流恢复成原来的Java对象。
   
   序列化的含义和意义:
   序列化机制允许将实现序列化的Java对象转换成字节序列,这些字节序列可以保存在磁盘上,或通过网络传输,以备以后重新恢复成原来的对象。
   序列化机制使得对象可以脱离程序的运行而独立存在。
   对象的序列化(Serialize)指将一个Java对象写入IO流中,
   
   与此对应的是,对象的反序列化(Deserialize)则指从IO流中恢复该Java对象。
   如果需要让某个对象支持序列化机制,则必须让它的类是可序列化的(serializable)。
   
   为了让某个类是可序列化的,该类必须实现如下两个接口之一:
   - Serializable(常用)
   - Externalizable
   
      Java中很多类已经实现了Serializable,该接口是一个标记接口,实现该接口无须实现任何方法,它只是表明该类的实例是可序列化的。
     所有可能在网络上传输的对象的类都应该是可序列化的,否则程序将会出现异常。
   
二、Properties类

   Properties 类是Java中操作配置文件的类
   
   
三、Optional
Java应用中最常见的bug就是空值异常。
在Java 8之前,Google Guava引入了Optionals类来解决NullPointerException,从而避免源码被各种null检查污染,以便开发者写出更加整洁的代码。
Java 8也将Optional加入了官方库。
Optional仅仅是一个容易存放T类型的值或者null的类。它提供了一些有用的接口来避免显式的null检查,可以参考Java 8官方文档了解更多细节。

| 修饰符        | 返回值类型  | 方法                                                 | 说明                                                  |
| ------------- | ----------- | ---------------------------------------------------- | ----------------------------------------------------- |
| public static | Optional | of(T value)                                          | 创建一个容器,不能为空,否则报空指针异常              |
| public static | Optional | ofNullable(T value)                                  | 创建一个容器,可以包含null                            |
| public        | T           | get()                                                | 取容器里面的值,如果为空会抛出 NoSuchElementException |
| public        | boolean     | isPresent()                                          | 判断容器中是否存在对象                                |
| public        | void        | ifPresent(Consumer consumer)              | 如果容器中存在对象,则执行 consumer                   |
| public        | Optional | filter(Predicate predicate)               | 筛选                                                  |
| public        | Optional | map(Function mapper)         | 取容器对象中的属性                                    |
| public        | T           | orElse(T other)                                      | 如果对象存在,则输出,对象不存在,则返回 other        |
| public        | T           | orElseGet(Supplier other)               | 如果对象存在,则输出,对象不存在,则返回 other        |
| public        | T           | orElseThrow(Supplier exceptionSupplier) | 若是对象不存在,则抛出异常                            |

   
 

你可能感兴趣的:(java,开发语言)