美文网首页
Java将对象序列化 Transient

Java将对象序列化 Transient

作者: IT菜鸟学习 | 来源:发表于2019-12-12 15:18 被阅读0次

    一、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将对象序列化 Transient

          本文链接:https://www.haomeiwen.com/subject/gyrtnctx.html