我正在使用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)
...
答案 0 :(得分:1)
setHeader()
期望索引已经存在;它不会增加列表的大小。这与java.util.List
相同。您可以改用addHeader()
。