0

int[]Java とApache Thriftのi32( )の違いを理解してくれる人はいますか? NumericDataArray後者はいつ使用する必要がありますか?また、文字列のようなものi32はありますか?

4

2 に答える 2

2

倹約タイプから

ベースタイプ

基本型は、すべてのプログラミング言語で使用できる主要な型に焦点を当てて、豊富ではなく単純さと明快さを目標に選択されました。

bool: A boolean value (true or false)
byte: An 8-bit signed integer
i16: A 16-bit signed integer
i32: A 32-bit signed integer
i64: A 64-bit signed integer
double: A 64-bit floating point number
string: A text string encoded using UTF-8 encoding

javai32にマップされる 32 ビットの符号付き整数も同様intです。

倹約には配列はありませんが、コンテナタイプがあります:

コンテナ

Thrift コンテナーは、ほとんどのプログラミング言語で一般的に使用され、一般的に利用可能なコンテナー型にマップされる、厳密に型指定されたコンテナーです。

コンテナには次の 3 つのタイプがあります。

list: 要素の順序付きリスト。STL ベクトル、Java ArrayList、スクリプト言語のネイティブ配列などに変換します。

set: 一意の要素の順序付けられていないセット。STL セット、Java HashSet、Python のセットなどに変換します。 注: PHP はセットをサポートしていないため、List と同様に扱われます。

map: 厳密に一意のキーから値へのマップ。STL マップ、Java HashMap、PHP 連想配列、Python/Ruby 辞書などに変換します。デフォルトが提供されていますが、型マッピングは明示的に固定されていません。カスタム コード ジェネレーター ディレクティブが追加され、さまざまな宛先言語でカスタム型を置換できるようになりました。

コンテナー要素は、有効な Thrift Type のいずれでもかまいません。

これらのコンテナーは、対応する Java ListSetおよびにマップされMapます。

したがって、thrift を使用していて、値のコレクションを転送する必要がある場合は、 のようなintタイプのリスト コンテナを使用します。これにより、Java 側で が生成されます。int32list<i32>java.util.ArrayList<Integer>

心配する必要はありません: thrift には java にマップされStringた基本型があります。したがって、 in thrift を定義するだけで、生成された Java コードが得られます。stringjava.lang.Stringstringjava.lang.String

于 2013-08-14T17:55:06.147 に答える
0

int[] は単純な配列で、通常は単純なことを行うために使用されます。一時データを保存します。

Williamが言ったように、i32はサードパーティのライブラリです。

特に問題がない場合は、int[] を使用することをお勧めしますが、i32 を使用する必要がある場合は、次のリンクを参照してください: http://people.apache.org/~thejas /thrift-0.9/javadoc/org/apache/thrift/protocol/TType.html

于 2013-08-14T17:06:26.967 に答える