为什么这里的add()方法不能编译?
Vector<?> vectorList[] = new Vector<?>[10];
vectorList[0].add("elem1");
谢谢
最佳答案
您的代码存在几个问题。首先,数组的元素未初始化,因此您要添加到一个不存在的 vector 中。其次,添加到类型为通配符的通用容器没有意义,因为它可能被限制为更有限的类型,因此添加并不安全。
您可以通过填充数组来解决第一个问题:
for (int i = 0; i < 10; i++ ){ vectorList[i] = new Vector<Integer>(); // can replace Integer with // any binding for ? }
既然您已经看到它可以用不接受 String 类型的 vector 填充,您就可以明白为什么 add 语句随后会失败。您可以通过提前绑定(bind)到特定类型(例如字符串)来解决这个问题。
参见Java Generics: Wildcards请参阅 Java 教程以获取更多信息。
编辑
看来我很怀疑,所以我有以下完整的、可编译的示例:
import java.util.*; public class Main { public static void main(String[] args){ Vector<?> vectorList[] = new Vector<?>[10]; for (int i = 0; i < 10; i++ ){ vectorList[i] = new Vector<Integer>(); } System.out.println("Hello world"); } }
使用 javac Main.java
进行编译不会出现编译错误。
关于java - Java 中的通用 vector ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2521801/