如何将向量作为方法参数传递?

时间:2014-11-13 06:28:37

标签: java

我有一个servlet,它从表单中获取变量并将它们存储在向量中。

我想将整个向量传递给另一个java类中的方法。

我该怎么办呢?

这就是我的尝试:

在servlet中 -

private DbUpdate dbup = new DbUpdate(); 
int j=0;

Vector<String> v = new Vector<String>();
v.addElement("name");
v.addElement("profession");

Enumeration vEnum = v.elements();
j = dbup.insertValues(vEnum);  

DbUpdate.java类

public int insertValues(Enumeration vc) {
    for (int j=1; j<14; j++) {
        statement.setString(j, vc.get(j));
    }
    i = statement.executeUpdate();
}

它说我在这里不能有vc.get()方法。

任何帮助都将受到高度赞赏。

提前致谢。

3 个答案:

答案 0 :(得分:1)

即使您使用的是JDK 1.5 +,为什么还在使用这类过时的类,这真的很奇怪。

改为使用List

List<String> params = Arrays.asList("name", "profession");
// if you prefer you can also create an ArrayList<String>() and add it one by one

dbUp.insertValues(params);

并在您的DbUpdate.java中,执行类似

的操作
public int insertValues(Collection<String> params){
    int i = 0;
    for (String param : params){
        statement.setString(++i, param);
    }
    return statement.executeUpdate();
}

修改

如果在任何情况下你确实想要使用Enumeration,你需要理解Enumeration类似于Iterator的工作,它为你提供了一个迭代对象集合的接口。因此它应该看起来像:

public int insertValues(Enumeration<String> params){ // or use Enumeration<?>, but you need 
                                                     // further casting below
    int j = 0;
    while (params.hasMoreElements()) {
        String param = params.nextElement();
        statement.setString(++j, param);
    }
    return statement.executeUpdate();
}

答案 1 :(得分:0)

如果你迭代枚举的所有元素,你可以使用下面的代码

for(Enumeration e : vc.values())

答案 2 :(得分:0)

使用以下两种方法迭代Enumeration

hasMoreElements()
Tests if this enumeration contains more elements.


nextElement()
Returns the next element of this enumeration if this enumeration 
object has at least one more element to provide.

您需要修改insertValues()方法,

 public int insertValues(Enumeration vc){  
            while(vc.hasMoreElements()){                
             if(j<14){  
                statement.setString(j, vc.get(j));  
                 j++;               
             }  
           }  
           i = statement.executeUpdate();       
      return 0; // return what you want to return       
 }