Google Protocol Buffers не устанавливает значение в компоновщике - PullRequest
0 голосов
/ 06 июля 2018

У меня есть абстрактный класс, в котором создается сообщение Google Protocol Buffers с использованием абстрактных методов, как в следующем примере кода:

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.

Заранее спасибо.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...