0

我正在尝试使用 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 值
4

1 回答 1

1

假设 QfyQueue.getId() 返回带有 @Id 注释的字段,它永远不会在 addQueue() 方法中返回 null。但是,如果没有匹配条件的元素,first().get() 将返回 null。如果您想要抛出异常,则可以调用 safeGet()。

在 removeQueue() 中,您必须显式检查 null 'q'。将 null 传递给 delete 方法将产生 NPE。

于 2012-11-09T05:56:50.170 回答