我有一个MongoDB集合,其中的文档包含多个数组。我正在检索这些文档并将其数据存储到POJO中。
在某些情况下,我可以这样做:
BasicDBList kws = (BasicDBList)obj.get(Constants.KEYWORDS_STR);
if(!kws.isEmpty())
tb.setKeywords(kws.toArray(new String[0]));
然而,我有一个阵列让我感到难过。我认为它包含Longs,但toArray(new Long [0])抛出java.lang.ArrayStoreException。我认为好,由于某种原因,它们存储为字符串,并尝试转换为字符串数组,仍然有一个java.lang.ArrayStoreException。
如何判断BasicDBList认为它存储在哪个类中?
答案 0 :(得分:0)
通过获取BasicDBList的迭代器并查看对象,我发现它保存了整数(这很奇怪,因为它应该是Longs,但这是另一个问题的主题)。
答案 1 :(得分:0)
由于BasicDBList extends ArrayList<Object>
,(注意 - 未使用泛型),因此无法保证kws
中包含同类型。您应该可以将new String[0]
更改为new Object[0]
并避免例外。
如果没有某种陈述,就没有办法轻易询问数组:
if (instanceof ){...}
else if (instanceof) {...}
您的数据模型应该被很好地绘制出来,以至于不需要这种模式,或者至少足以让您知道预期的有限集合。