我正在尝试用Objectify实现一个队列:
void addQueue(String bucket, String value){
Long next = ofy().load().type(OfyQueue.class)
.order("-id").first().get().getId();
OfyQueue q = new OfyQueue(bucket, value, next);
ofy().save().entity(q).now();
}
void removeQueue(String bucket, String value){
OfyQueue q = ofy().load().type(OfyQueue.class)
.filter("value", value).order("-id").first().get();
ofy().delete().entity(q);
}
这段代码有问题:
next
可能为空?因此,当我创建一个新的OfyQueue
时,它将通过空值
在removeQuery方法中,q也可能为null,是否需要显式测试q是否为null或ofy()。delete()。entity将忽略传递给它的null值
最佳答案
假设QfyQueue.getId()返回带有@Id注释的字段,则它将永远不会在addQueue()方法中返回null。但是,如果没有符合条件的元素,则first()。get()将返回null。如果要抛出异常,可以调用safeGet()。
在removeQueue()中,您必须显式检查是否为空'q'。将null传递给delete方法将产生一个NPE。