简单说就是为了保存在内存中的各种对象的状态(也就是实例变量,不是方法),并且可以把保存的对象状态再读出来。虽然你可以用你自己的各种各样的方法来保存objectstates,但是Java给你提供一种应该比你自己好的保存对象状态的机制,那就是序列化。
场景:
假如创建的对象,需要在 if 判断条件中使用,则在 if 判断条件中new新对象,这样可以减少对象的创建。
clone的最大特点就是,不会去调用任何构造方法
import lombok.Data; import java.io.Serializable; @Data public class User implements Serializable,Cloneable{ private static final long serialVersionUID = 1L; private static User user = new User(); /** * 用户id */ private Long userId; /** * 用户名称 */ private String userName; /** * 调用对象创建优化 * @return */ public static User getInstance(){ try { return (User) user.clone(); } catch (CloneNotSupportedException e) { e.printStackTrace(); } return new User(); } }
if (flag) { // 将创建对象放到if中,不进入if则不创建,提高效率 //SysMenuManagerGrant grant = new SysMenuManagerGrant(); User user = User.getInstance(); }