我想用不同对象的数组调用App Engine端点,说String
,int
和int
。
我已尝试过StackOverflow中提到的一些建议,但由于对象数组的类型不同,因此不支持这些建议。
我创建了一个班级JsonList<T>
来保存一个对象,ContainerInfo
班级将String
,int
和int
作为成员get
和set
函数调用。
当我尝试将端点称为Endpoint(User, JsonList<ContainerInfo>)
时,会引发IllegalArgumentException
Parameterized type <ContainerInfo> not supported
错误。
是否有可能实现此目的?
答案 0 :(得分:0)
我发现Endpoint方法不允许传入两个或更多对象(除非它们是像String这样的基本类型)。在您的示例中,您传递的是User
和JsonList
个对象。
你可以做的是在做这个时创建一个pojo包装类,里面有User
对象以及你的JsonList数组。然后在你的Endpoint方法中解开所有内容。
Endpoint(MyWrapper)
注意:如果您打算从Android等移动客户端调用您的Endpoints方法,您的JsonList可能必须实现Serializable
。
修改强> 这是一个例子:
public final class SomeObject
{
private String stringValue;
private int intValue;
// add more
public SomeObject(String stringValue, int intValue)
{
this.stringValue = stringValue;
this.intValue = intValue;
}
public String getString()
{
return stringValue;
}
public String getInt()
{
return intValue;
}
}
public final class someObjectWrapper
{
private User user;
private List<SomeObject> someObjectList
public someObjectWrapper(List<SomeObject> someObjectList, int user) {
this.someObjectList = someObjectList;
this.user = user;
}
public List<SomeObject> getSomeObjectList() {
return someObjectList;
}
public void setSomeObjectList(List<SomeObject> someObjectList) {
this.someObjectList = someObjectList;
}
public int getUser() {
return user;
}
public void setUser(int user) {
this.user = user;
}
}
然后在你的API方法中,只需从包装器中获取这些属性作为新变量,然后随意使用它们。