protobuf使用protoc生成的java类, 这个类一旦创建了对象,该对象就是只读的,不能修改它的任何属性,也就是说这个类是只读类。protobuf使用builder来构建对象,构建过程中为设置对象属性值,设置完后,builder本次任务已经完结了。
据下面的例子来说明一下:
用户类:
静态内部类,使用user内部类来修改user的字段,而外部其他类没权限直接修改user的字段:
使用这两个类:
输出结果为:
谢明媚
据下面的例子来说明一下:
用户类:
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());
输出结果为:
谢明媚