こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

実行時引数をrun()メソッドに渡すには?

初めまして。宜しくお願いします。
Javaの初心者で現在勉強中で、一定時間ごとに命令を走らせるプログラムを作ろうとしており、様々なサイトや本を参考にした結果、Timerクラス、TimerTaskクラスを使うと良さそうという事がわかりました。
一定周期毎に標準出力するのみのプログラムなら出来たのですが、実行時引数を一定周期毎に標準出力するプログラム作成時に躓いてしまいました。

望む挙動:
$ java test1 abcdef
とターミナルに入力して、一定周期毎に、"abcdef"が表示し続ける挙動。

躓いている点:
main()メソッドからrun()メソッドに実行時引数(この場合、String st = String new args[0];)を渡そうと試みてる点。

-----------------ソースコード---------------------


import java.util.Timer;
import java.util.TimerTask;

public class test1 {
public static void main(String args[]) throws Exception{

String st = new String(args[0]);

Timer timer = new Timer();
timer.schedule(new TestTimer(), 0, 1000);

}
/**
* 指定間隔置きに呼ばれる処理
*/

static class TestTimer extends TimerTask{

public void run(){
System.out.println(st);
// System.out.println("Hello, World!");
}

}

}

----------------------------------------------

宜しくお願いします。

投稿日時 - 2005-08-04 16:43:07

QNo.1559374

困ってます

質問者が選んだベストアンサー

TestTimerに
private String myParameter;
というフィールドを追加して
public void setParameter(String param){
myParameter = param;
}
のようなセッターメソッドを追加して
runメソッドで
if(myParameter == null){
  //nullのときの処理
  //setParameter()を呼ぶように促すメッセージを出力する
  //とか
  //例外を投げるとか…
}else{
  //null以外のときの処理
  System.out.println(myParameter);
}
としてみてはいかがでしょうか?

投稿日時 - 2005-08-04 16:57:04

お礼

質問に答えていただき本当にありがとうございますっ!!

セッターメッソドがキーだったんですね。
まだセッターメソッドがどういう挙動で(どういう仕組みで)動いてるのか分かってない状況ですが、これはソースや調べて自分の理解に繋げ様と思います。

本当に、本当に有難うございます。

投稿日時 - 2005-08-04 18:42:12

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(2)

ANo.2

#1です。
あ゛っ、しまった。
>timer.schedule(new TestTimer(), 0, 1000);
↑をする前に
TestTimer testTimer = new TestTimer();
testTimer.setParameter(st);
としてから
timer.schedule(testTimer, 0, 1000);
としないとダメです。


あっ、あとは引数ありのコンストラクタと作ってもいいですね。
public TestTimer(String param){
  myParameter = param;
}
をTestTimerに追加して、
timer.schedule(new TestTimer(st), 0, 1000);
とする。

投稿日時 - 2005-08-04 17:05:58

あなたにオススメの質問