我有一种方法可以发送签名为
sendemail(Vector addr, String subject, String body)
zvector addr 包含电子邮件必须发送到的电子邮件地址。
如果我们有多个分开的电子邮件地址,那么我们将每个地址添加到 Vector 并传递它。但现在我只想将电子邮件发送到 1 个地址。
那么我可以将字符串电子邮件地址直接传递给方法还是需要将单个字符串也添加到向量?
您将需要创建一个单一元素Vector
。这是创建单项向量的方法:
public <T> Vector<T> singletonVector(T item) {
Vector<T> v = new Vector<T>(1);
v.add(item);
return v;
}
如果您将sendemail
方法更改为采用 a java.util.List
,则可以使用该Collections.singletonList
方法来创建您的 one-item List
。并且由于Vector
实现List
了,您不必更改任何现有的调用sendemail
.
sendemail(Collections.singletonList(emailAddress), mySubject, myBody);
您肯定需要实例化一个新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
的仍然被实例化,但至少你可以使用你喜欢的一个签名。
您需要将单个字符串添加到向量中。
如果您可以修改 sendemail,您可以将其定义为:
public void sendemail(String subject, String body, String ... addr)
然后你不需要构造一个向量,你只需传递地址。
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.
}