I use the following code try to create an array of string vectors, I hope to have an array of 3 items, each item is a string vector :
Vector<String> Result_Vector_Array[]=new Vector<String>[3];
But NB highlighted the line as error(generic array creation), what’s wrong ? What’s the correct way to do it ? I know there is also Arraylist, but it’s not synchronized, so I want to use vector.
Due to type erasure, the JVM doesn’t know at runtime that you have a
VectorofString. The best it can do is create a ‘raw’ Vector. It can’t guarantee for you that allVectors actually containStrings. That’s why you get a warning from your IDE.One way to work around this, it cast it, as jgubby suggests. Another is to put a
Listinto yourVectors, instead of an array.But, more importantly, why can the array have only 3 items? Wouldn’t it be better to create a class with three fields to put into your
Vector? With three items, that’s not too much work, and you get the added bonus that you can give each of the three elements a helpful name, which should make your code a lot clearer.Also, since Java 6, there exist a number of useful new synchronized
Listimplementations, which might perform better thanVector, such asCopyOnWriteArrayList, or wrap a regularListin aCollections.synchronizedList.