Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/344.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Protobuf、MapStruct和空值_Java_Protocol Buffers_Mapstruct - Fatal编程技术网

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);
}