コンストラクタと変数宣言

(1)正しい例
private String[] FieldName = null;
/**
*


*
メソッド概要:

* 初回のみ呼ばれるコンストラクタ

*

* @param symbol
* @param pdf_dir
* @param Name
*


*

*/
//初回のみ呼ばれるコンストラクタ
public TestSvf(String symbol, String pdf_dir, String[] Name) {
svf = new Vrw32();
SimpleDateFormat formatDate = new SimpleDateFormat(“yyyyMMddHHmmssSSS”);
String jikoku = formatDate.format(new Date());
//出力ファイル名の指定
String tempFilename = symbol + “_” + jikoku + “.pdf”;
String tempPath = pdf_dir + “out_pdf”;
//格納フォールダ
tempPath = tempPath + tempFilename;
//PDFファイル名
pathfile_PDF = pathfile_PDF = tempFilename;
i = svf.VrSetSpoolFileName2(tempPath);
i = svf.VrPreviewStartPage();
FieldName = Name;
//初期化
InitField();
}
public void InitField() {
//空文字の挿入
for (int index = 0; index < FieldName.length; index++) { svf.VrsOut(FieldName[index], ""); } } (2)間違った例 public TestSvf(String symbol, String pdf_dir, String[] FieldName) { svf = new Vrw32(); SimpleDateFormat formatDate = new SimpleDateFormat("yyyyMMddHHmmssSSS"); String jikoku = formatDate.format(new Date()); //出力ファイル名の指定 String tempFilename = symbol + "_" + jikoku + ".pdf"; String tempPath = pdf_dir + "out_pdf"; //格納フォールダ tempPath = tempPath + tempFilename; //PDFファイル名 pathfile_PDF = pathfile_PDF = tempFilename; i = svf.VrSetSpoolFileName2(tempPath); i = svf.VrPreviewStartPage(); //初期化 InitField(); } FieldNameとthis.FieldNameは違う。 (1)の FieldName = Name; とは this.FieldName = Name を指しているため、全部共通で使える (thisは通常省略する) (1)では、メソッド内にFieldNameというものがないので、 FieldNameは外で宣言してある、this.FieldNameを指している (2)の場合は、FieldNameは メソッド内で宣言しているので、 外でFieldNameを宣言していても、メソッド内の方が有効、 そのため、メソッド内でしか使えない。
その他

コメント

  1. ??Blog より:

    納豆キャベツトライ

タイトルとURLをコピーしました