1

我有以下课程:

  1. Streamable界面
  2. DiaryEntry工具Streamable
  3. StatusEntry工具Streamable

还有一个stream字段是 a LinkedList<Ref<? extends Streamable>>,(在我看来)应该同时包含Ref<DiaryEntry>Ref<StatusEntry>

不幸的是,我错了,因为我在这一行得到一个编译错误:

ofy().load().refs(stream).values(); 

错误是:

The method refs(Iterable<Ref<E>>) in the type Loader is not applicable for the arguments (LinkedList<Ref<? extends Streamable>>)

是否有可能我以某种糟糕的方式对我的实体或字段进行了建模?该方法是否应该refs具有此签名refs(Iterable<Ref<? extends E>>)而不是当前签名?

谢谢

4

2 回答 2

0

我认为 Objectify 不适用于接口成员列表。我相信你会看到一个异常,说构造函数缺少 for Streamable。据我说,解决这个问题的最好方法是有具体的课程。在那种情况下List<Ref<Streamable_Concrete_Class>>可以处理扩展的其他类Streamable_Concrete_Class。持久化 List 后,List 的 @Load 注释应按预期工作

于 2013-04-26T10:22:57.607 回答
0

您没有在您的问题中提供足够的信息来了解整个情况,例如什么类声明E以及该类型参数的边界是什么。

但为了冒险猜测,请尝试重新声明refs采用Iterable<? extends Ref<? extends E>>.

于 2013-01-19T18:34:34.677 回答