为什么 Google Cloud Endpoints 客户端库中我的模型上的静态方法不可用?
Why aren't static methods on my models available in the Google Cloud Endpoints client libraries?
我有以下实体作为我的一个端点的 return 值。当我生成客户端库时,它似乎忽略了静态方法,这使得 Player.key() 不可用。我在任何地方都找不到任何文档来解释客户端库中允许或删除的内容,因此我正在尝试弄清楚,但是除了反复试验之外的一些理解框架会有所帮助。
@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);
我显然无法在客户端的单独 class 中编写此方法,因为我无权访问 Appengine SDK。
生成的客户端库主要用于对数据建模,不支持辅助方法。如果需要,您可以将这些实用程序包含在另一个库中。如果语法有效,我不相信该方法的非静态版本是否在客户端执行您想要的操作,因为它们的客户端库不会复制实体或其依赖项。
我有以下实体作为我的一个端点的 return 值。当我生成客户端库时,它似乎忽略了静态方法,这使得 Player.key() 不可用。我在任何地方都找不到任何文档来解释客户端库中允许或删除的内容,因此我正在尝试弄清楚,但是除了反复试验之外的一些理解框架会有所帮助。
@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);
我显然无法在客户端的单独 class 中编写此方法,因为我无权访问 Appengine SDK。
生成的客户端库主要用于对数据建模,不支持辅助方法。如果需要,您可以将这些实用程序包含在另一个库中。如果语法有效,我不相信该方法的非静态版本是否在客户端执行您想要的操作,因为它们的客户端库不会复制实体或其依赖项。