向量中参数的匹配

时间:2013-06-19 08:41:52

标签: java vector

我正在尝试学习Java,因为我是初学者,最近我偶然发现了Java中的向量和列表。这是一个非常简单和基本的问题,但任何帮助对学习者都非常有帮助。 我创建了一个向量v,如下所示:

public vector createVector(){
    Vector v = new Vector();
    v.add(Path1);   //Path1 is the path of a directory
    v.add(Path2);
    return v;
}

我有一个传递的函数,其中一个参数是 v.get(i)。功能如下所示:

for(int i=0,i<v.size(),i++){
    qlm("Write", "init",getList(),**v.get(i)**); // Function call. 
}

功能声明是:

Void qlm(String Option, String init, List lists, **String paths**){

}

我无法将函数调用中的参数(即v.get(i))与String Paths匹配。请分享您的知识。

非常感谢。

3 个答案:

答案 0 :(得分:2)

如果没有Generics,v.get(i)将始终返回一个对象。以下是解决问题的两种方法:

Vector声明为

Vector< String > v = new Vector< String > ();

或者做

v.get(i).toString();

但在执行v.get(i).toString()之前,应在v.get(i)上执行空检查。

答案 1 :(得分:0)

试试这个

for(int i=0,i<v.size(),i++){
    qlm("Write", "init",getList(),v.get(i).toString()); // Function call. 
    }

答案 2 :(得分:0)

通常,在Java中,当有人声明Vector时,他们将使用Generics声明它。要声明一个包含字符串的Vector,你可以这样写:

Vector<String> myVector = new Vector<String>();

然后,为了迭代它的值,你会这样做:

for(int i = 0; i < myVector.size(); i++){
    String s = myVector.get(i); // The get() method here returns a String instead of Object
}

或者,因为Vector是可枚举的,所以你可以这样做:

for(String s : myVector){
    // There is now a variable named s available in the loop that
    // will contain each element in the vector in turn. 
}

话虽如此,你真的不应该再使用Vector了。它们已经很老了,Java中有更好的列表。我建议您使用ArrayList,但它们是各种可用的列表,可以在“所有已知的实现类”下找到here

要使用泛型和ArrayList重写示例,您可以这样做:

List<String> myList = new ArrayList<String>();
myList.add(Path1);
myList.add(Path2);

for(String s : myList){
    qlm("Write", "init", getList(), s);
}