Protobuf只读数据类设计原理

protobuf使用protoc生成的java类, 这个类一旦创建了对象,该对象就是只读的,不能修改它的任何属性,也就是说这个类是只读类。protobuf使用builder来构建对象,构建过程中为设置对象属性值,设置完后,builder本次任务已经完结了。


据下面的例子来说明一下:


用户类:

public class user {    private string username;    private int age;    public boolean hasusername(){      ...    }    public boolean hasage(){...   }   public string getusername(){     return username  }    public int getage(){  return age;}     public static builder newbuilder() {    return new builder();  }}

静态内部类,使用user内部类来修改user的字段,而外部其他类没权限直接修改user的字段:

public static class user.builder {    private string _username;    private int _age;   public string getusername(){     return _username  }    public int getage(){  return _age;}   public user.builder setusername(string username){this._username = username;return this;  }    public user.builder setage(int age){  this._age = age;return this;}public user build() {    user user = new user();    user.username = this._username;    user.age = this._age;         //清除所有字段    this._username = null;    this._age = 0;return user;}}

使用这两个类:

user.builder builder = user.newbuilder();builder.setusername(“谢明媚").setage(24);user user = builder.build();builder.setusername("谢铭");system.out.println(user.getusername());



输出结果为:

谢明媚
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值