>我需要在协议缓冲区架构中包含以下类的实例作为字段:
public final class Metrics extends HashMap<Object, Double> {
}
但是当我添加以下内容时:
map<bytes, double> metrics = 2;
我有效地Map key cannot be float, double, bytes, message, or enum types
收到消息。
我想到的一种方法是将对象(键(转换为字节,然后转换为 base64 键以创建一个新映射,这将是要发送到线路的实际映射(然后在到达另一侧时反转这些操作(。但这似乎太昂贵了,我觉得我必须为每个条目创建一个输入流的实例(并关闭它们(。
对于这种情况,是否有已知的方法?你会怎么做? 我没有找到任何这样的例子。
谢谢
您可以使用键值对列表来模拟 map(这是在 proto3 中引入 map 并将它们向后移植到 proto2 之前的做法(:
message Metric {
bytes key = 1;
double value = 2;
}
repeated Metric metrics = 2;