署名が
sendemail(Vector addr, String subject, String body)
zvector addrには、Eメールの送信先となるEメールアドレスが含まれています。
複数の個別のメールアドレスがある場合は、それぞれをVectorに追加して渡します。しかし、今は1つのアドレスにのみメールを送信したいと思います。
では、文字列のメールアドレスをメソッドに直接渡すことはできますか、それともベクターにも単一の文字列を追加する必要がありますか?
1つの要素を作成する必要がありますVector
。1アイテムのベクターを作成する方法は次のとおりです。
public <T> Vector<T> singletonVector(T item) {
Vector<T> v = new Vector<T>(1);
v.add(item);
return v;
}
代わりにsendemail
メソッドを変更する場合は、メソッドを使用して1つのアイテムを作成できます。また、を実装しているため、を呼び出す既存のコードを変更する必要はありません。java.util.List
Collections.singletonList
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.
}