1

我想使用反射 api 为 protobuf 消息设置类型映射的字段的值。

我尝试使用如下所示的设置字段方法。这似乎不起作用。我可以使用Filling up a map field in Proto using reflection API 中的建议使其工作。但这似乎不是一个好的解决方案!

message OuterMessage {
  map<string, InnerMessage> mapInner = 1;
}
Map<String, InnerMessage> map = new HashMap<>();
map.put("R1", im1);
map.put("R2", im2);
OuterMessage.newBuilder().setField(fieldDescriptor, map);

我收到错误消息,

java.lang.ClassCastException: java.base/java.util.HashMap cannot be cast to java.base/java.util.List

当我查看实现时,这是可以理解的。但是我还能如何设置地图?

4

0 回答 0