ポモドーロテクニックのファンである私は、宿題をやり続けるためにカウントダウンタイマーを作っています。ただし、この特定のプロジェクトは宿題ではありません。:)
Stackには、タイマーを使用してユーザー入力などの前の遅延を制御することについて多くの質問がありますが、スタンドアロンタイマーについてはそれほど多くありません。私は友人からこのコードに出くわし、Javaドキュメンテーションのクラスを勉強しました。
public class Stopwatch {
static int interval;
static Timer timer;
public static void main(String[] args)
{
Scanner sc = new Scanner(System.in);
System.out.print("Input seconds => : ");
String secs = sc.nextLine();
int delay = 1000;
int period = 1000;
timer = new Timer();
interval = Integer.parseInt( secs );
System.out.println(secs);
timer.scheduleAtFixedRate(new TimerTask()
{
public void run()
{
System.out.println(setInterval());
}
}, delay, period);
}
private static final int setInterval()
{
if( interval== 1) timer.cancel();
return --interval;
}
}
私にはわかりにくい構文がいくつかあります。検討:
timer.scheduleAtFixedRate(new TimerTask()
{
public void run()
{
System.out.println(setInterval());
}
}, delay, period);
かっこと中かっこがどのように機能するのかわかりません。一見すると、の使用法を考えると、とパラメーターscheduleAtFixedRate(TimerTask task, long delay, long period)
は表示されますが、最初のパラメーターの前に開いているパラメーターは表示されません。delay
period
私の最初のパラメータは実際にはこのコードブロック全体ですか?ブロック全体が括弧で囲まれていると思いますが、そうではありません。これはJavaの一般的な構文ですか?私はこれまでに遭遇したことがありません。
new TimerTask(){public void run(){System.out.println(setInterval()); }}
変更をいじり始める前に、理解していることを明確にしておきたいと思います。