【发布时间】:2014-02-09 06:20:20
【问题描述】:
我正在研究从数据库中获取数据并构造 protobuff 消息的东西。鉴于可以从数据库中为某些字段获取空值的可能性,我将在尝试构造 protobuff 消息时得到空指针异常。从线程 http://code.google.com/p/protobuf/issues/detail?id=57 得知 protobuffs 中不支持 null,我想知道处理抛出 NPE 的唯一其他方法是否是将手动检查插入到与 proto 对应的 java 文件中,如下所示!
message ProtoPerson{
optional string firstName = 1;
optional string lastName = 2;
optional string address1 = 3;
}
ProtoPerson.Builder builder = ProtoPerson.Builder.newBuilder();
if (p.getFirstName() != null) builder.setFirstName(p.getFirstName());
if (p.getLastName() != null) builder.setLastName(p.getLastName());
if (p.getAddress1() != null) builder.setAddress1(p.getAddress1());
...
那么有人可以澄清一下在 protobuff 构建期间是否有任何其他可能的有效方法来处理 null 值?
【问题讨论】:
-
同一事物的较短版本:
Optional.ofNullable(p.getFirstName()).ifPresent(builder::setFirstName); -
你链接的线程是好线程吗?我在那里找不到任何与空值相关的东西。也许这些更相关github.com/protocolbuffers/protobuf/issues/1606 & github.com/protocolbuffers/protobuf/issues/5450
标签: java null protocol-buffers