为了账号安全,请及时绑定邮箱和手机立即绑定

java.lang.IndexOutOfBoundsException - 使用协议缓冲区构建

java.lang.IndexOutOfBoundsException - 使用协议缓冲区构建

慕容708150 2021-10-13 10:27:01
我正在使用 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();这是我的 protobuff 消息(调用 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;    }}堆栈跟踪: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 回答

?
肥皂起泡泡

TA贡献1829条经验 获得超6个赞

setHeader()期望索引已经存在;它不会增加列表大小。这与java.util.List. 你可以addHeader()改用。


查看完整回答
反对 回复 2021-10-13
  • 1 回答
  • 0 关注
  • 96 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信