Java将对象序列化 Transient

一、transient使用小结

1)一旦变量被transient修饰,变量将不再是对象持久化的一部分,该变量内容在序列化后无法获得访问。
2)transient关键字只能修饰变量,而不能修饰方法和类。注意,本地变量是不能被transient关键字修饰的。变量如果是用户自定义类变量,则该类需要实现Serializable接口。

3)被transient关键字修饰的变量不再能被序列化,一个静态变量不管是否被transient修饰,均不能被序列化。

科普下 序列化、反序列化、持久层、持久化,
序列化实体类变成json等格式,
反序列化就是json变成实体类,
持久层就是保存到数据库,
持久化保存到数据库的数据的特性。

例子:

public class TransientTest {

    public static void main(String[] args) {
        User user = new User("张三", 11);
        System.out.println(user.toString());
        String s = JSON.toJSONString(user);
        System.out.println(s);

    }
}

class User {

    private transient String name;
    private Integer age;

    public User() {
    }

    public User(String name, Integer age) {
        this.name = name;
        this.age = age;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public Integer getAge() {
        return age;
    }

    public void setAge(Integer age) {
        this.age = age;
    }

    @Override
    public String toString() {
        return "User{" +
                "name='" + name + '\'' +
                ", age=" + age +
                '}';
    }
}

输出

User{name='张三', age=11}
{"age":11}

二、使用@ResponseBody,transient字段能被序列化么?

使用@ResponseBody, 字段上使用 transient 不能过滤
@ResponseBody返回的格式由很多因素决定。
常用的返回json格式。如果使用的jackson convert可以通过 @JsonIgnore进行过滤字段;

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • JAVA序列化机制的深入研究 对象序列化的最主要的用处就是在传递,和保存对象(object)的时候,保证对象的完整...
    时待吾阅读 10,925评论 0 24
  • 官方文档理解 要使类的成员变量可以序列化和反序列化,必须实现Serializable接口。任何可序列化类的子类都是...
    狮_子歌歌阅读 2,444评论 1 3
  • (一)什么是序列化和反序列化 序列化和反序列化是将对象转化成字节数组以方便保存或者用于网络传输,这个对象可以是一个...
    简书生活2017阅读 267评论 0 2
  • 通巨毕业已近一年了,小勒还是会经常怀念,这不,晚上让他找一本能读的故事书录音,她就找到了这本《成长档案》,满怀喜悦...
    利桑阅读 53评论 0 0
  • 广告投放来说,广告主做广告总是出于各种各样的目的,品牌的曝光、提升销量、投资回报率。 那么对于搜索类的广告,广告主...
    箜箜儿阅读 295评论 0 0