- PR -

Vector型配列の宣言方法について

投稿者投稿内容
未記入
会議室デビュー日: 2007/07/03
投稿数: 8
投稿日時: 2007-07-03 18:36
String型に指定したVector型配列を使用しようとしたところ
宣言部分で"';'がありません"とコンパイルエラーになります。
当然';'はついているのにも関わらずです。
何らか別の原因があるのでしょうがそれがわからずに困っています。

下記が問題部分のコードです。

***************************************************************

private Vector<String> adrs<String>; //[name,address]

***************************************************************

どなたかVector型変数の正しい宣言方法を教えて頂けないでしょうか。

====================================================

全体のソースを書きに記します。ご参考まで。

====================================================

/*
* SendMail.java
*
* Created on 2007/07/03, 13:38
*
* To change this template, choose Tools | Template Manager
* and open the template in the editor.
*/

package sendmail;

/********************************************************************
---------------------------------------------------------------------
メールを指定されたアドレスに送信する。
---------------------------------------------------------------------
引数;smtp、to、from、件名、本文
---------------------------------------------------------------------
********************************************************************/
import java.util.*;
import javax.mail.*;
import javax.mail.internet.*;



public class SendMail{
private String host;
private String myNm;
private String myAd;
private String sbj;
private String msg;

private Vector<String> adrs<String>; //[name,address]

//コンストラクタ。
SendMail(String strHost, String strMyNm, String strMyAd){
host = strHost;
myNm = strMyNm;
myAd = strMyAd;
}

public Vector getVctAddress(){return adrs;}
public String getStrSubject(){return sbj; }
public String getStrMessage(){return msg; }

//メールアドレス、件名、内容の設定。
public void set(Vector vctAdrs, String strSubject, String strMessage){
adrs = vctAdrs;
sbj = strSubject;
msg = strMessage;
}

//メール送信処理。
public void send(){
try{
String smtp = host;
String myName = myNm;
String myAddress = myAd;
String subject = sbj;
String message = msg;

//SMTPサーバーの指定
Properties props = System.getProperties();
props.put("mail.smtp.host",smtp);
Session session = Session.getDefaultInstance(props,null);
MimeMessage mmsg = new MimeMessage(session);
//あて先
InternetAddress[] toList = new InternetAddress[1];
//送信元
InternetAddress fromAddress = new InternetAddress(myAddress,MimeUtility.encodeWord(myName,"iso-2022-jp","B"));
mmsg.setFrom(fromAddress);
mmsg.setSentDate(new Date());
//件名
mmsg.setSubject(MimeUtility.encodeText(subject,"iso-2022-jp","B"));
//本文
mmsg.setContent(message,"text/plain; charset=iso-2022-jp");

//メールの形式を指定(メールヘッダ)
mmsg.setHeader("Content-Transfer-Encoding","7bit");

//送信
Transport transport = session.getTransport("smtp");
transport.connect();

String toName, toAdrs;
for(int i=0; i < adrs.size();i++){
try{
String[] s = new String[2];
s = adrs.elementAt(i);
toName=s[0] + "様";
toAdrs=s[1];
toList[0] = new InternetAddress(toAdrs,MimeUtility.encodeWord(toName,"iso-2022-jp","B"));
mmsg.setRecipients(MimeMessage.RecipientType.TO,toList);
transport.send(mmsg,toList);
}catch(Exception f){
System.out.println("例外:" + f.toString());
f.printStackTrace();
}
}
transport.close();
}
catch(Exception e){
System.out.println("例外:" + e);
}
}
}



Edosson
ぬし
会議室デビュー日: 2004/04/30
投稿数: 675
投稿日時: 2007-07-03 18:41
[quote]
private Vector<String> adrs<String>;
[/qurte]
宣言の書式が間違ってますよ。
mio
ぬし
会議室デビュー日: 2005/08/25
投稿数: 734
お住まい・勤務地: 神奈川県
投稿日時: 2007-07-03 20:31
Genericsのない書き方は、できますか?
nagise
ぬし
会議室デビュー日: 2006/05/19
投稿数: 1141
投稿日時: 2007-07-03 21:00
コード:
アクセス修飾子 型名<ジェネリクスの型> 変数名;


という文法ですよね。
"';'がありません"は変数名の後ろででていませんか?
変数名の直後に;がある必要があるからですね。
かつのり
ぬし
会議室デビュー日: 2004/03/18
投稿数: 2015
お住まい・勤務地: 札幌
投稿日時: 2007-07-03 23:10
コンパイラによってエラー箇所の解釈が多少違いますので、
エラー内容とエラーメッセージが必ず一致するとは限りません。
特に文法の間違いの検出は難しいものです。
未記入
会議室デビュー日: 2007/07/03
投稿数: 8
投稿日時: 2007-07-04 09:37
皆様早速のご返答ありがとうございます。
以下のように宣言を書き換えました。

**************************************************
private Vector<String> adrs; //[name,address]
**************************************************

しかしそうすると今度はVector型の変数をString型の変数に代入する箇所で
"互換性がない"とエラーになってしまいます。

**************************************************
try{
String[] s = new String[2];
s = adrs.elementAt(i); ←問題の箇所
toName=s[0] + "様";
toAdrs=s[1];
toList[0] = new InternetAddress(toAdrs,MimeUtility.encodeWord(toName,"iso-2022-jp","B"));
mmsg.setRecipients(MimeMessage.RecipientType.TO,toList);
transport.send(mmsg,toList);
}catch(Exception f){
System.out.println("例外:" + f.toString());
f.printStackTrace();
}**************************************************


どなたかVector型とString型の型変換についてご教示願います。
未記入
会議室デビュー日: 2007/07/03
投稿数: 8
投稿日時: 2007-07-04 09:37
皆様早速のご返答ありがとうございます。
以下のように宣言を書き換えました。

**************************************************
private Vector<String> adrs; //[name,address]
**************************************************

しかしそうすると今度はVector型の変数をString型の変数に代入する箇所で
"互換性がない"とエラーになってしまいます。

**************************************************
try{
String[] s = new String[2];
s = adrs.elementAt(i); ←問題の箇所
toName=s[0] + "様";
toAdrs=s[1];
toList[0] = new InternetAddress(toAdrs,MimeUtility.encodeWord(toName,"iso-2022-jp","B"));
mmsg.setRecipients(MimeMessage.RecipientType.TO,toList);
transport.send(mmsg,toList);
}catch(Exception f){
System.out.println("例外:" + f.toString());
f.printStackTrace();
}**************************************************


どなたかVector型とString型の型変換についてご教示願います。
Edosson
ぬし
会議室デビュー日: 2004/04/30
投稿数: 675
投稿日時: 2007-07-04 10:00
引用:

未記入さんの書き込み (2007-07-04 09:37) より:

しかしそうすると今度はVector型の変数をString型の変数に代入する箇所で


それですべて解決、なんて、誰も保証なんかしてないし。
「しかし」とか「今度は」とか、関係ないでしょ。
引用:

"互換性がない"とエラーになってしまいます。


ちゃんと答えがでてるじゃないですか。
その互換性をチェックしましょう。

スキルアップ/キャリアアップ(JOB@IT)