我的应用程序中有许多不同的种类,它们在数据存储区中是不相关的,但它们共享一个共同的Java基类,这有助于我一般地处理它们。 (一般来说,我的意思是不考虑它们的种类,而不是Java的“泛型”意义。)
现在我想对每种实体进行一些测试,我无法弄清楚如何去做。
我想做这样的事情:
Class<? extends MyBaseUnit> cl = getNextKind();
MyBaseUnit bu = (MyBaseUnit) ofy().load().type( cl ).filter( ?? ).first().now();
我认为没有任何像null过滤器这样的东西,如果我只是删除filter()调用,那么first()返回一个Ref,我似乎无法做多少。
我想我可以对所有具有长ID的类型使用(“id&gt;”,0)的过滤器,但对于具有字符串名称的过滤器,类似的无意义过滤器会是什么?
或许有更好的方法可以做到这一点?我的理想是每次运行测试时检索不同的实体。
答案 0 :(得分:0)
最后,我在问题的最后部分采用了丑陋的方式:
for (KindInfo ki: kinds) {
BaseUnit bu = null;
List<? extends BaseUnit> lbu = null;
if (ki.usesLongKey()) {
lbu = ofy().load().type( cl ).filter( "id !=", 7).limit(1).list();
} else {
lbu = ofy().load().type( cl ).filter( "kn !=", "barf35" ).limit(1).list();
}
if ((null == lbu) || (0 == lbu.size())) {
Log.i( "No entities for type=" + cl.getName() );
} else {
bu = (BaseUnit) lbu.get(0);
runTestsOnSampleEntity( bu );
}
}
过滤器只是组成值(“kn”是我使用字符串键名的所有种类使用的属性名称。)
我最初尝试使用(“id!=”,0“)的过滤器,因为0不是有效的id,但是这导致了”“java.lang.IllegalArgumentException”。