我有以下课程:
Streamable
interface DiaryEntry
实施Streamable
StatusEntry
实施Streamable
一个stream
字段是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>>)
而不是当前签名?
由于
答案 0 :(得分:0)
您没有在问题中提供足够的信息来了解整体情况,例如哪个类声明E
以及该类型参数的界限是什么。
但要冒猜测,请尝试重新声明refs
以取Iterable<? extends Ref<? extends E>>
。
答案 1 :(得分:0)
我不认为Objectify使用接口成员列表。我相信你会看到Streamable
缺少构造函数的异常。据我所知,解决这个问题的最佳方法是拥有具体的课程。在这种情况下,List<Ref<Streamable_Concrete_Class>>
可以处理扩展Streamable_Concrete_Class
的其他类。保持列表后,列表的@Load注释应按预期工作