2013-06-02 58 views
2

我正在爲Google App Engine創建端點,並且爲了簡單起見我需要創建自定義ArrayList,但我似乎遇到了麻煩。在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類?

回答

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(); 
+0

不知道爲什麼我沒有想到這樣做的投選方式,但我猜這會奏效。一旦我能夠在今天晚些時候檢查,我會確認。謝謝 – Kirk

+0

我的問題中的錯字是什麼?我想知道我是否做得太過分了。 – Kirk

+0

peopelist vs personlist – Nate