【问题标题】:Convert from ArrayList<String[]> to Collection<Object[]>?从 ArrayList<String[]> 转换为 Collection<Object[]>?
【发布时间】:2013-01-28 19:16:30
【问题描述】:

我有一个必须返回数组集合的方法。 (这是 JUnit 中的参数化测试。)我实际上只需要返回三个字符串,但它们需要位于数组集合中。这是我的方法:

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&lt;String[]&gt; to Collection&lt;Object[]&gt;

所以真的有两个问题:(a)这有什么问题,考虑到ArrayListCollection 的实现,String 是从Object 派生的; (b) 我该如何解决?

感谢您的帮助。

【问题讨论】:

标签: java junit junit4


【解决方案1】:

对于第一个问题,a Collection &lt;String []&gt; is not a Collection &lt;Object []&gt; 因为泛型不是多态的。

对于第二个问题,只需将所有内容声明为对象:

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);
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-06-20
    • 1970-01-01
    • 2014-05-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-05-28
    • 2014-05-09
    相关资源
    最近更新 更多