java.lang.IndexOutOfBoundsException - при создании объекта Java с использованием буфера протокола - PullRequest
0 голосов
/ 26 сентября 2018

Я использую Protobuff для создания своего Java-объекта, почему я продолжаю получать java.lang.IndexOutOfBoundsException: Index: 0, Size: 0 Исключение при вызове setHeader(0, h1) в моем коде.

Вот мой код:

        Person.Header h1 = Person.Header.newBuilder()
                .setKey("Key1")
                .setValue("value1")
                .build();

        Person person = Person.newBuilder()
                .setBody("TestBody")
                .setHeader(0, h1)
                .build();

Вот мое сообщение о протобуфе (вызов dataformat.proto):

syntax = "proto3";
package tutorial;

option java_package = "tutorial";

message Person {
    string body = 1;
    repeated Header header = 2;

    message Header {
        string key = 3;
        string value = 4;
    }
}

StackTrace:

java.lang.IndexOutOfBoundsException: Index: 0, Size: 0
    at java.util.ArrayList.set(ArrayList.java:453)
    at com.google.protobuf.ProtobufArrayList.set(ProtobufArrayList.java:96)
    at tutorial.Dataformat$Person.setHeader(Dataformat.java:572)
    at tutorial.Dataformat$Person.access$1200(Dataformat.java:42)
    at tutorial.Dataformat$Person$Builder.setHeader(Dataformat.java:815)

...

1 Ответ

0 голосов
/ 26 сентября 2018

setHeader() ожидает, что индекс уже существует;это не увеличивает размер списка.Это то же самое, что и java.util.List.Вы можете использовать addHeader() вместо.

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