我想使用反射 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
当我查看实现时,这是可以理解的。但是我还能如何设置地图?