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簿記を行うためだけに拡張するのか、それともインターフェイスにメソッドを追加して内部から呼び出されるようにするのかによって異なります。後者の場合、 type であると宣言されているように、キャストを行う必要があることは明らかですが、この場合も a であることがわかっています。publicMyClassPeopleList<Person>PersonList

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