为什么我的模型上的静态方法不适用于Google Cloud Endpoints客户端库?

时间:2015-04-17 02:22:22

标签: java android google-cloud-endpoints

我有以下实体作为我的一个端点的返回值。当我生成客户端库时,它似乎忽略了静态方法,这使得Player.key()不可用。我无法在任何地方找到任何文档来解释客户端库中允许或删除的内容,因此我试图弄明白,但除了反复试验之外,一些理解框架会有所帮助。< / p>

@Entity
public class Player {
  public static final String PLAYER = "Player";
  public static final String UUID = "uuid";
  public static final String NAME = "name";

  @Id
  String uuid;

  String name;

  public String getUuid() {
    return uuid;
  }

  public void setUuid(String uuid) {
    this.uuid = uuid;
  }

  public String getName() {
    return name;
  }

  public void setName(String name) {
    this.name = name;
  }

  public static Key key(String uuid) {
    return KeyFactory.createKey(PLAYER, uuid);
  }
}

如果我按如下方式重写方法,它可以工作:

  public Key key(String uuid) {
    return KeyFactory.createKey(PLAYER, uuid);
  }

但这需要我在我的客户代码中做以下愚蠢的事情,我想避免这样做:

Key playerKey = new Player().key(uuid);

我显然无法在客户端的单独课程中编写此方法,因为我无法访问appengine SDK。

1 个答案:

答案 0 :(得分:1)

生成的客户端库主要用于建模数据,而不是支持辅助方法。如果需要,可以将这些实用程序包含在另一个库中。如果语法有效,我不相信该方法的非静态版本正在客户端执行您想要的操作,因为它们客户端库不会复制实体或其依赖项。