Java arrayList与Vector不兼容

时间:2017-07-13 17:21:53

标签: java arraylist vector collections

我的代码如下

private Vector<Vector<Object>> barCode;

private boolean isBarCode(String temp) {
        for (Vector<Object> link : barCode) {
            if (link.get(0).toString().equals(temp)) {
                return true;
            }
        }
        return false;
    }

我收到以下错误。

Caused by: java.lang.ClassCastException: java.util.ArrayList incompatible with java.util.Vector

在for循环线

请输入任何内容?

2 个答案:

答案 0 :(得分:1)

private List<List<Object>> barCode;

private boolean isBarCode(String temp) {
    for (List<Object> link : barCode) {
        if (link.get(0).toString().equals(temp)) {
            return true;
        }
    }
    return false;
}

Use the interface, not the implementationVectorArrayList都实现了List接口,因此这允许(或任何其他实现)的实例。我还建议您在其余代码中标准化创建ArrayList个实例,除非您确定需要other implementations的功能。

答案 1 :(得分:0)

您的barCode包含ArrayList而不是Vector

有人放了错误的容器。您的示例中的数据不足以找出原因和原因。

您可以将for (Vector<Object> link : barCode)替换为for (ArrayList<Object> link : barCode),将Vector<Vector<Object>> barCode替换为Vector<ArrayList<Object>> barCode,但我强烈建议您在发现之前不要这样做为什么barCode包含ArayList

之所以发生这种情况,是因为使用了代码原始泛型中的某个地方(Vector没有通用参数)。