【Protobuf(二)】protobuf3 默认值

tech2023-01-24  48

/** * 关于protobuf3 默认值问题 * 首先,pb对象的get方法永远不会有null,如果没有设置,会生成对应的默认值 * * 如果属性值是一个message,那么pb会为这个属性生成一个hasXXX方法,可以用这个方法判断是否设置了这个属性 * 对于其他属性,比如string,uint32等等,如果没有设置,get出来的将会是空值,比如string就是"",uint32就是0,此时无法区分是没有设置还是设置了默认值,需要业务自行约定,比如传一个"-1"等特殊的值标识 */ @Test public void test2() { Person person = Person.newBuilder() .build(); System.out.println(person.hasCommonInfo()); System.out.println(person.getAge()); System.out.println(person.getName().length()); /** * 输出: * false * 0 * 0 */ }

pb定义:

message CommonInfo { uint64 id = 1; } message Person { CommonInfo commonInfo = 1; string name = 2; uint32 age = 3; }

 

最新回复(0)