定义Vector <! - ? - >时有用吗?

时间:2014-05-02 10:27:33

标签: java raw-types generic-type-argument

当以下容器有用时

        Vector<?> wilcardVector;

如果我能做到这一点就是创建新容器

    wilcardVector = new Vector<String>();

或添加null

    wilcardVector.add(null);

在编译时尝试添加其他类型或使用不同的泛型方法传递失败。那有什么用呢?

2 个答案:

答案 0 :(得分:1)

无界通配符的一个有效用例是将它用作方法参数,当您仅使用那些独立于类型参数的Vector方法时,例如size()isEmpty()等:

类似的东西:

void sampleMethod(Vector<?> vector) {

    if (vector.isEmpty()) {
        // your logic
    }
}

并且编译器允许将任何Vector传递给上面的sampleMethod

答案 1 :(得分:0)

Vector<?> wilcardVector;

表示

Vector<?> wilcardVector=null;

并且调用wilcardVector.add(null);将导致例外,因为wilcardVector = null

所以,你要使用

wilcardVector = new Vector<String>();
当您添加&#34;仅&#34;时,应该起诉{p> wilcardVector = new Vector<String>();字符串,没有别的。