我在Java中使用以下返回类型的服务方法:
List<HashMap<String,Object>>
Run Code Online (Sandbox Code Playgroud)
我怎样才能在节俭中最好地塑造它?
很简单:
struct MyObjectData {
// data of your objects
}
list< map< string, MyObjectData>>
Run Code Online (Sandbox Code Playgroud)
你可能想把它变成一个类型:
typedef list< map< string, MyObjectData>> MyObjectStructure
Run Code Online (Sandbox Code Playgroud)
需要注意的是数据结构MyObjectData.如果Object你的字面意思是任何 Object,那么我们就遇到了问题.Thrift无法处理这样的通用情况,因为它不支持彼此派生的结构(就像你可以做的那样class).你可以做的是,使用union不同类型的结构,一次只使用一个结构:
struct Foo { /* some fields */ }
struct Bar { /* some fields */ }
// a union allows us to store different kinds of structs in one list
union Generic {
1: Foo foo
2: Bar bar
}
// technically, a union is more or less a struct with optional fields,
struct Alternative {
1: optional Foo foo
2: optional Bar bar
}
Run Code Online (Sandbox Code Playgroud)
如果您需要派生结构,我通过这样做解决了这个问题:
struct Base {
// some fields
}
struct Derived {
1: Base base_
// some more fields
}
Run Code Online (Sandbox Code Playgroud)
这对我很有用.如果你有一个深度继承树,它可能会有点痛苦,但在我的特定情况下情况并非如此.
| 归档时间: |
|
| 查看次数: |
3328 次 |
| 最近记录: |