2012-02-09 29 views
2

我想投kx.cflip对象为字符串:java的KDB - 铸件C字符串

String test = (String) c.at(flip[0],1) 

但是我得到一个错误,说明我不能投C对象为String。有谁知道我可以施放一个kx C对象来返回一个字符串吗?

回答

1

不太清楚“C对象”究竟意味着什么,但我认为它是一个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 2012-02-09 17:02:12

+0

忽略。有效。谢谢!!! – syphon228 2012-02-09 17:04:12

+0

您将得到[C错误,因为您使用第二种算法 - 这是用于检索kdb符号而不是kdb字符串。 kdb符号和字符串是不同的,所以有不同的相应的java类型。 – algolicious 2012-02-10 10:13:59

1

A c.Flip是从键到值的映射。特别是,它具有String键和Object值,分别存储在Flip(分别称为xy)内的两个数组中。

如果你想获得的关键“foo”的值,那么你可以做这样的事情:

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

如果你碰巧知道该值将是一个String,那么你可以施放它:

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

您还可以在最后两行合并为一个,像这样:

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