在java中使用Vector是否安全?

Bak*_*yor 3 java vector java-me

我写了以下java代码:

public static void main(String[] args) {
    Vector vector = new Vector();
    for(int i=1; i<=10; i++)
        vector.addElement(i);

    Enumeration vEnum = vector.elements();
    while(vEnum.hasMoreElements())
        System.out.println(vEnum.nextElement());
}
Run Code Online (Sandbox Code Playgroud)

在编译它时会收到以下警告消息:

Note: TestJavaApplication.java uses unchecked or unsafe operations.
Note: Recompile with -Xlint:unchecked for details.
Run Code Online (Sandbox Code Playgroud)

Netbeans抱怨"过时收藏"的消息.

在这种情况下,你推荐我什么?

注意,我需要在J2ME应用程序中使用Vector作为存储元素顺序的动态数组.我很乐意使用Hashtable但不幸的是它不存储其元素的顺序.

编辑1 审查后,这个答案我从改变报关Vector vector = new Vector();进入Vector<String> vector = new Vector<String>();.现在又收到另一条警告信息:

TestJavaApplication.java:2: warning: com.sun.org.apache.xerces.internal.parsers.IntegratedParserConfiguration is Sun proprietary API and may be removed in a future release
import com.sun.org.apache.xerces.internal.parsers.IntegratedParserConfiguration;
                                                 ^
Run Code Online (Sandbox Code Playgroud)

谢谢.

Cam*_*ner 9

您看到的关于"未检查或不安全操作"的警告是因为Vector它是参数化类型.实际上Vector<E>,您应该在使用时提供类型参数Vector.如果您使用"原始",Vector那么您将无法获得Java的泛型框架的任何优势."不安全"警告意味着您错过了某种类型的安全性.

"过时类型"警告是存在的,因为Vector已经(基本上)不赞成使用List它的实现(ArrayList以及LinkedList其他).

各个List类型是通用的替代品Vector.ArrayList可以作为一个或多或少的替代品Vector,但你应该注意一些差异.阅读javadocs以获取更多信息.

最重要的区别是,Vector是线程安全的,但ArrayListLinkedList没有.如果您依赖于Vector内置的线程安全性,那么您应该看一下该Collections.synchronizedList方法.

编辑:哦,你正在使用JavaME.Vector在这种情况下,你可能会陷入困境.然而,通用类型警告仍然适用.

如果您愿意,可以忽略警告.他们有没有告诉你,如果你不小心有可能是一个问题,但如果你细心,你会没事的.