0

署名付きの関数を実装したい

static boolean checkAnyOutOfBoundary(int[] index,ArrayList<ArrayList<T>> list)

Tを他の自作クラス(DocScore)に置き換えたいところ。T を Object に置き換えてみました。しかし、次のようにリストインスタンスをインスタンス化しようとすると

ArrayList<ArrayList<Object>> DocScoreList = new ArrayList<ArrayList<Object>>();
for (int i = 0; i < index.length; i++)
DocScoreList.add(root.children.get(i).docList);

The type of root.children.get(i).docList is ArrayList<DocScore>

DocScoreList に要素を追加できません。これを実装する方法を知っている人はいますか?

4

3 に答える 3

1

したがって、にを追加していますArrayList<DocScore>ArrayList<ArrayList<Object>>、addメソッドはを必要としArrayList<Object>ます。

ArrayList<DocStore>必要な場所を教えていただけますArrayList<Object>か?いいえ、バナナの袋は果物の袋ではないので

したがって、を追加できるものでなけれDocScoreListばなりません。いくつかの例は次のとおりです。ArrayListArrayList<DocStore>

  • ArrayList<DocStore>実際のタイプ
  • List<DocStore>なぜならArrayList<T> _ List<T>
  • ArrayList<? extends Object>(直接的または間接的に)拡張するいくつかの未知のタイプのリストObjectDocStore基準を満たしているので、? extends Objectこれは機能します。
  • List<? extends Object>
  • など。あなたはアイデアを得る。
于 2013-02-15T19:56:33.753 に答える
0

BarのサブクラスであってもFoo、ArryList は ArrayList のスーパークラスではないためです。

変化する

ArrayList<ArrayList<Object>> DocScoreList = new ArrayList<ArrayList<Object>>();

ArrayList<ArrayList<? extends Object>> DocScoreList = new ArrayList<ArrayList<? extends Object>>();
于 2013-02-15T19:47:50.220 に答える
0
static <T> boolean checkAnyOutOfBoundary(int[] index,ArrayList<ArrayList<T>> list)

呼び出しの例:

boolean b = checkAnyOutOfBoundary( new int[]{0,1}, new ArrayList<ArrayList<String>>());
于 2013-02-15T19:48:01.940 に答える