2012-02-09 10 views
2

にキャスティングCは、私は文字列にkx.cクラスflipオブジェクトをキャストしようとしています:JavaのKDB - 文字列

私はStringにCのオブジェクトをキャストすることはできませんというエラーを取得していますが
String test = (String) c.at(flip[0],1) 

。文字列を返すためにkx Cオブジェクトをキャストできるか誰にでも分かりますか?

答えて

1

"C objects"で正確に何を意味するのかはっきりしていませんが、それはchar配列であると想定しています。これはKdb文字列を表すJava型です。

Object[] data = this.flip.y; 
Object[] columnData = (Object[]) data[row];   
char[] data = (char[]) columnData[i]; 
return String.valueOf(data); 

kdbシンボルを取得しようとすると、文字列配列になります。

Object[] data = this.flip.y; 
Object[] columnData = (Object[]) data[row];   
String data = (String) columnData[i]; 
return data; 
+0

取得(左括弧)これを試してもCは文字列にキャストできません。 – syphon228

+0

無視してください。出来た。ありがとうございました!!! – syphon228

+0

2番目のアルゴリズムを使用したときに[Cエラーが発生します。これはkdb文字列ではなくkdbシンボルを取得するためのものです。 kdbのシンボルと文字列は異なるため、対応するjavaの型が異なります。 – algolicious

1

c.Flipは、キーから値へのマッピングです。特に、StringキーとObject値を持ち、Flip(それぞれxyと呼ばれます)内の2つのアレイに格納されています。

あなたがキー「foo」という値を取得したい場合は、このような何か行うことができます:あなたは値がStringになることを知ってしまった場合、あなたはキャストすることができます

c.Flip myFlip = ...; // Get hold of your flip 
Object value = myFlip.at("foo"); // Throws ArrayIndexOutOfBoundsException if "foo" is not found 

をそれ:

String strValue = (String) value; // Throws ClassCastException if value isn't a String 

ます。また、そうのように、一つに最後の2行を組み合わせることができます:

String strValue = (String) myFlip.at("foo");