我有一种发送签名为
的电子邮件的方法sendemail(Vector addr, String subject, String body)
zvector addr包含电子邮件必须发送到的电子邮件地址。
如果我们有多个独立的电子邮件地址,那么我们将每个地址添加到 矢量并传递它。但现在我想将电子邮件发送到1个地址。
我可以直接将String电子邮件地址传递给方法或需要 将单个字符串添加到Vector?
答案 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.
}