GAE + Objectify类层次结构和引用(...)

时间:2013-01-19 13:25:15

标签: java generics google-cloud-datastore objectify

我有以下课程:

  1. Streamable interface
  2. DiaryEntry实施Streamable
  3. StatusEntry实施Streamable
  4. 一个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>>)而不是当前签名?

    由于

2 个答案:

答案 0 :(得分:0)

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

但要冒猜测,请尝试重新声明refs以取Iterable<? extends Ref<? extends E>>

答案 1 :(得分:0)

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