我们可以将字符串传递给期望向量参数的方法吗?

时间:2013-02-08 18:23:50

标签: java vector

我有一种发送签名为

的电子邮件的方法
sendemail(Vector addr, String subject, String body)

zvector addr包含电子邮件必须发送到的电子邮件地址。

如果我们有多个独立的电子邮件地址,那么我们将每个地址添加到 矢量并传递它。但现在我想将电子邮件发送到1个地址。

  

我可以直接将String电子邮件地址传递给方法或需要   将单个字符串添加到Vector?

4 个答案:

答案 0 :(得分:2)

您需要创建一个元素Vector。这是创建单项Vector的方法:

public <T> Vector<T> singletonVector(T item) {
    Vector<T> v = new Vector<T>(1);
    v.add(item);
    return v;
}

如果您更改sendemail方法以取代java.util.List,则可以使用Collections.singletonList方法创建单项List。由于Vector实现了List,因此您无需更改任何调用sendemail的现有代码。

sendemail(Collections.singletonList(emailAddress), mySubject, myBody);

答案 1 :(得分:2)

您肯定需要实例化新的vector<String>并向其添加String

另一个解决方案是使用不同的签名重载函数:

sendemail(Vector<String> addr, String subject, String body) {
  ..
}

sendemail(String addr, String subject, String body) {
  Vector<String> vaddr = new Vector<String>();
  vaddr.add(addr);
  sendemail(vaddr, subject, body);
}

所以新的Vector仍然会被实例化,但至少你可以使用你喜欢的那个签名。

答案 2 :(得分:0)

您需要将单个字符串添加到矢量。

如果您可以修改sendemail,您可以做的是将其定义为:

public void sendemail(String subject, String body, String ... addr)

然后你不需要构造一个向量,只需传递地址即可。

答案 3 :(得分:0)

sendemail(String...addr, String subject, String body)
{

    //addr.length(): The number of email address
    //addr[0]: 1st email adrdess 
    //addr[1]: 2nd email adrdess 
    .
    .
    .
    //addr[addr.length-1]: last email adrdess 

}

我建议你这样写:

sendemail(String...addr)
{

    subject=addr[addr.lentgh-2];
    body=addr[addr.lentgh-1];
    addr[0]..addr[addr.length-3]: email addresses.

}