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);
}

このコードには何か問題があります。

  • nextnullかもしれませんか?したがって、新しいOfyQueueものを作成すると、null値が渡されます
  • 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 に答える