cqengine IndexedCollection 添加导致空指针
cqengine IndexedCollection add causing nullpointer
我在将元素添加到 IndexedCollection 时遇到此错误:
HIGHEST: null
java.lang.NullPointerException
at java.util.concurrent.ConcurrentSkipListMap.doGet(ConcurrentSkipListMap.java:778)
at java.util.concurrent.ConcurrentSkipListMap.get(ConcurrentSkipListMap.java:1546)
at com.googlecode.cqengine.index.support.AbstractMapBasedAttributeIndex.addAll(AbstractMapBasedAttributeIndex.java:81)
at com.googlecode.cqengine.engine.CollectionQueryEngine.perform(CollectionQueryEngine.java:1125)
at com.googlecode.cqengine.engine.CollectionQueryEngine.forEachIndexDo(CollectionQueryEngine.java:1206)
at com.googlecode.cqengine.engine.CollectionQueryEngine.addAll(CollectionQueryEngine.java:1122)
at com.googlecode.cqengine.ConcurrentIndexedCollection.add(ConcurrentIndexedCollection.java:351)
我尝试调试以查看我是否正在传递空值,但我没有。我要添加的对象有一个 null DateTime
但相应的索引已经 returns null 而不是当它为 null.
我认为这个问题的解决方案最终归结为经验,@npgall 你遇到过这个问题吗?如果遇到过,你是如何解决的?
我认为站点上缺少这方面的文档。它提到了 SimpleNullableAttribute
和 MultiValueNullableAttribute
但没有真正解释何时使用它们。
TL;DR是:如果你得到一个NPE,这通常意味着你需要使用一个可为空的属性。
或者更准确地说:如果您的数据有可能包含空值,那么您需要使用可为空的属性(例如 SimpleNullableAttribute
)而不是不可为空的属性(例如 SimpleAttribute
).
无论如何,我已经扩展了主要 Readme.md 上的文档以更详细地讨论 "Null values"。希望对您有所帮助!
我在将元素添加到 IndexedCollection 时遇到此错误:
HIGHEST: null
java.lang.NullPointerException
at java.util.concurrent.ConcurrentSkipListMap.doGet(ConcurrentSkipListMap.java:778)
at java.util.concurrent.ConcurrentSkipListMap.get(ConcurrentSkipListMap.java:1546)
at com.googlecode.cqengine.index.support.AbstractMapBasedAttributeIndex.addAll(AbstractMapBasedAttributeIndex.java:81)
at com.googlecode.cqengine.engine.CollectionQueryEngine.perform(CollectionQueryEngine.java:1125)
at com.googlecode.cqengine.engine.CollectionQueryEngine.forEachIndexDo(CollectionQueryEngine.java:1206)
at com.googlecode.cqengine.engine.CollectionQueryEngine.addAll(CollectionQueryEngine.java:1122)
at com.googlecode.cqengine.ConcurrentIndexedCollection.add(ConcurrentIndexedCollection.java:351)
我尝试调试以查看我是否正在传递空值,但我没有。我要添加的对象有一个 null DateTime
但相应的索引已经 returns null 而不是当它为 null.
我认为这个问题的解决方案最终归结为经验,@npgall 你遇到过这个问题吗?如果遇到过,你是如何解决的?
我认为站点上缺少这方面的文档。它提到了 SimpleNullableAttribute
和 MultiValueNullableAttribute
但没有真正解释何时使用它们。
TL;DR是:如果你得到一个NPE,这通常意味着你需要使用一个可为空的属性。
或者更准确地说:如果您的数据有可能包含空值,那么您需要使用可为空的属性(例如 SimpleNullableAttribute
)而不是不可为空的属性(例如 SimpleAttribute
).
无论如何,我已经扩展了主要 Readme.md 上的文档以更详细地讨论 "Null values"。希望对您有所帮助!