2

我正在为 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 类?

4

1 回答 1

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它被声明为 type List<Person>,尽管我们知道PersonList在这种情况下它也是 a :

((PersonList)People).somePersonListMethod();
于 2013-06-02T08:20:00.480 回答