0

署名が

sendemail(Vector addr, String subject, String body)

zvector addrには、Eメールの送信先となるEメールアドレスが含まれています。

複数の個別のメールアドレスがある場合は、それぞれをVectorに追加して渡します。しかし、今は1つのアドレスにのみメールを送信したいと思います。

では、文字列のメールアドレスをメソッドに直接渡すことはできますか、それともベクターにも単一の文字列を追加する必要がありますか?

4

4 に答える 4

2

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.ListCollections.singletonListListVectorListsendemail

sendemail(Collections.singletonList(emailAddress), mySubject, myBody);
于 2013-02-08T18:26:21.633 に答える
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ものはまだインスタンス化されますが、少なくとも、好みの署名を使用できます。

于 2013-02-08T18:27:28.567 に答える
0

ベクトルに単一の文字列を追加する必要があります。

sendemailを変更できる場合にできることは、次のように定義することです。

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

次に、ベクトルを作成する必要はありません。アドレスを渡すだけです。

于 2013-02-08T18:27:41.790 に答える
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.

}
于 2016-02-15T04:01:12.310 に答える