在Google App Engine端点中使用扩展的ArrayList

时间:2013-06-02 07:15:02

标签: java google-app-engine google-cloud-endpoints

我正在为Google App Engine创建一个端点,为了简单起见,我遇到了创建自定义ArrayList的需求,但我似乎遇到了麻烦。

如果我使用这样的东西,一切都很好

public class MyClass {
    @ElementCollection
    private List<Person> People;
    // etc
}

如果我将其切换为

public class PersonList extends ArrayList<Person> {
    // custom methods
}

public class MyClass {
    @ElementCollection
    private PersonList People;
    // etc
}

我收到错误

  

PersonList不是受支持的属性类型。

我必须坚持使用第一个实现,或者有没有办法扩展List类?

1 个答案:

答案 0 :(得分:2)

首先,我假设您在问题中输入了一个拼写错误,其中您将类定义为PeopleList,然后声明类型为PersonList的成员变量。 ..对吧?

如果你的代码也没有这个错误,那么也许你可以使用它:

public class MyClass {
    @ElementCollection
    private List<Person> People;
    // etc
}

允许您使@ElementCollection正常工作,但是当您实例化 People时,请使用此功能:

People = new PersonList();

其中PersonList是:

public class PersonList extends ArrayList<Person> {
   // custom methods
}

对你有用的程度可能取决于你是否只是为了进行一些内部簿记而延长ArrayList,或者是否要添加更多public方法它的接口,从MyClass内调用。如果它是后者,那么显然需要你进行一些转换,因为People被声明为List<Person>类型,尽管在这种情况下我们知道它是PersonList,太:

((PersonList)People).somePersonListMethod();