Java Protobuf、MapStruct和空值
鉴于这个原型Java Protobuf、MapStruct和空值,java,protocol-buffers,mapstruct,Java,Protocol Buffers,Mapstruct,鉴于这个原型 option java_outer_classname = "FooProto"; message Foo { string bar = 1; } 此java类: public class MyFoo { String bar; } 和此映射器(使用Mapstruct): 当我有一个带有空条的MyFoo实例,并尝试将其映射到proto时,我会得到一个NullPointerException 这是因为映射器的自动生成代码调用了proto的自动生
option java_outer_classname = "FooProto";
message Foo {
string bar = 1;
}
此java类:
public class MyFoo {
String bar;
}
和此映射器(使用Mapstruct):
当我有一个带有空条的MyFoo实例,并尝试将其映射到proto时,我会得到一个NullPointerException
这是因为映射器的自动生成代码调用了proto的自动生成方法,如下所示:
public Builder setBar(java.lang.String value) {
if (value == null) {
throw new NullPointerException();
}
bar_ = value;
onChanged();
return this;
}
有没有办法避免这个问题?(这并不涉及在映射之前清理MyFoo实例,使其没有空值)您需要使用不同的
NullValueCheckStrategy
e、 g
在调用setBar
查看以获取更多信息
public Builder setBar(java.lang.String value) {
if (value == null) {
throw new NullPointerException();
}
bar_ = value;
onChanged();
return this;
}
@Mapper(nullValueCheckStrategy = NullValueCheckStrategy.ALWAYS)
public interface FooMapper() {
FooProto.Foo toProtoFoo(MyFoo myFoo);
}