4

配列のコレクションを返さなければならないメソッドがあります。(これは JUnit でのパラメーター化されたテストです。) 実際には 3 つの文字列のみを返す必要がありますが、それらは配列のコレクションに含まれている必要があります。これは私の方法です:

public static Collection<Object[]> browserList() {
    String[] firefox = { "firefox" };
    String[] chrome = { "chrome" };
    String[] ie = { "ie" };
    ArrayList<String[]> list = new ArrayList<String[]>(3);
    list.add(firefox);
    list.add(chrome);
    list.add(ie);
    return list;
}

これによりエラーが発生します: Type mismatch: cannot convert from ArrayList<String[]> to Collection<Object[]>

したがって、実際には2つの質問ArrayListCollectionありStringますObject。(b)どうすれば修正できますか?

助けてくれてありがとう。

4

1 に答える 1

7

最初の質問では、aCollection <String []>Collection <Object []>a ではありません。これは、ジェネリックがポリモーフィックではないためです。

2 番目の質問では、すべてをオブジェクトとして宣言するだけです。

public static Collection<Object[]> browserList() {
    Object[] firefox = { "firefox" };
    Object[] chrome = { "chrome" };
    Object[] ie = { "ie" };
    ArrayList<Object[]> list = new ArrayList<Object[]>(3);
    list.add(firefox);
    list.add(chrome);
    list.add(ie);
    return list;
}

あなたが凝縮できるもの:

public static Collection<Object[]> browserList() {
    Object[] firefox = { "firefox" };
    Object[] chrome = { "chrome" };
    Object[] ie = { "ie" };

    return Arrays.asList(firefox, chrome, ie);
}
于 2013-01-28T19:19:20.233 に答える