Google协议缓冲区未在构建器中设置值

时间:2018-07-06 12:01:02

标签: java protocol-buffers

我有一个抽象类,其中使用抽象方法创建Google协议缓冲区消息,就像下面的代码示例一样:

public abstract class AbstractMessageCreator {

    private long queryId;

    protected AbstractMessageCreator(long queryId) {
        this.queryId = queryId;
    }

    protected void createMessage() {
        SomeMessage.Builder messageBuilder = SomeMessage.newBuilder();

        messageBuilder.setId(queryId);
        messageBuilder.setSource(getSource());
        messageBuilder.setDestination(getDestination());

        System.out.println(messageBuilder);
        System.out.println("Details:");
        System.out.println(queryId);
        System.out.println(getSource());
        System.out.println(getDestination());

        // the above lines are written to the console, the following one just prints null           
        System.out.println(messageBuilder.build().getSource().getSomeProperty());

        // doing something with the created message
    }

    protected abstract SomeSource getSource();
    protected abstract SomeDestination getDestination();
}

当我使用该类作为其超类创建一个具体的类并尝试创建我的消息时,尽管所有返回值都已写入控制台,但其值并未初始化,这意味着这些方法提供了一些值,无法在构建器中设置。

您有什么想法导致这吗?我正在使用协议缓冲区3.5.1。

谢谢。

0 个答案:

没有答案