Java 如何表示HashMap<;对象,双>;ProtoBuffer中的实例?

Java 如何表示HashMap<;对象,双>;ProtoBuffer中的实例?,java,protocol-buffers,Java,Protocol Buffers,我需要在协议缓冲区架构中包含以下类的实例作为字段: public final class Metrics extends HashMap<Object, Double> { } 公共最终类度量扩展了HashMap{ } 但当我添加一些类似的内容时: map<bytes, double> metrics = 2; map度量=2; 我有效地得到消息映射键不能是float、double、bytes、message或enum类型 我想到的一种方法是将对象(键)转换成字节

我需要在协议缓冲区架构中包含以下类的实例作为字段:

public final class Metrics extends HashMap<Object, Double> {
}
公共最终类度量扩展了HashMap{
}
但当我添加一些类似的内容时:

map<bytes, double> metrics = 2;
map度量=2;
我有效地得到消息
映射键不能是float、double、bytes、message或enum类型

我想到的一种方法是将对象(键)转换成字节,然后转换成base64键来创建一个新的映射,这将是发送到线路的实际映射(然后在到达另一端时反转这些操作)。但这似乎太贵了,我觉得我必须为每个条目创建一个输入流实例(并关闭它们)

对于这种情况,是否有一种已知的方法?你会怎么做? 我没有找到任何这样的例子


感谢您,您可以使用键值对列表模拟map(在proto3中引入map并将其向后移植到proto2):


它们只能是对象类型。因此,您可以将包装器类用于原语(例如Integer、Float等)。键是什么类型的对象?它们肯定不是任意对象吗?这是一个为集成多个应用程序而创建的模块。我正在集成的当前一个将实际使用enum作为键,因此答案可能就在那里
message Metric {
  bytes key = 1;
  double value = 2;
}

repeated Metric metrics = 2;