Apache Thrift 中的自定义容器类型

Custom container type in Apache Thrift

如何使用 Apache Thrift 编写自定义容器类型?

我知道,默认情况下,Thrift 中的任何映射声明都会扩展 HashMap。

有没有办法修改它以扩展 ConcurrentHashMap 而不是 HashMap?

例如,如果 Test.thrift 定义如下:

构造测试数据 { 1:字符串标识, 2:地图详情 }

如何确保此映射作为 ConcurrentHashMap 实现?

谢谢!

有树预定义的容器类型(list<R>set<T>map<K,V>),它们与合适的、特定于语言的实现相关联。

虽然 Thrift 确实允许您以多种方式自由构建 structs,但没有对基本 IDL 数据类型 和容器的扩展。

某些语言绑定,例如 C++,允许通过 IDL 注释自定义 容器实现(即 类 在生成的代码中实际使用)。但是,只有一小部分语言支持此功能,AFAIK Java 不是其中之一。

How can I make sure that this map is implemented as a ConcurrentHashMap?

您需要更改 Thrift 编译器或post-以某种方式处理生成的代码工件。