Java Apache Thrift中的自定义容器类型

Java Apache Thrift中的自定义容器类型,java,thrift,concurrenthashmap,Java,Thrift,Concurrenthashmap,如何使用Apache Thrift编写自定义容器类型 我知道,默认情况下,Thrift中的任何映射声明都会扩展HashMap 有没有办法修改它以扩展ConcurrentHashMap而不是HashMap 例如,如果Test.thrift的定义如下: 结构测试数据 { 1:字符串id, 2:地图详情 } 如何确保此映射作为ConcurrentHashMap实现 谢谢 有树预定义的容器类型(list、set和map),它们与合适的、特定于语言的实现相关联 虽然Thrift确实允许您以多种方式自由构造

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

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

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

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

结构测试数据 { 1:字符串id, 2:地图详情 }

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


谢谢

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

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

一些语言绑定,如C++,允许通过IDL注释自定义<强>容器实现<强>(即,在生成的代码中实际使用哪些类)。然而,只有一小部分语言支持这一点,而AFAIK Java不是其中之一

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


您需要更改Thrift编译器或以某种方式对生成的代码工件进行后期处理。

我在另一篇文章()中读到,我们可以使用sortedcontainers,在生成java类时使用TreeMap实现而不是HashMap。同样,在使用Thrift编译器生成java类时,是否还有其他选项可以使用ConcurrentHashMap而不是HashMap?在这里给出的答案中,您不明白什么?谢谢!这就是我们目前正在做的——修改生成类的后处理。