java ネストした型やインターフェースの例

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java ネストした型やインターフェースの例相关的知识,希望对你有一定的参考价值。

package sample16;
// ネストした型やインターフェースの例
// タイマーアプリ
public class Timer {
	interface Observer { // 画面出力用クラス
		void update();
	}
    class Observable { // Observerへ表示の更新を通知する
        java.util.List observers = new java.util.LinkedList();
        void addObserver(Observer o) {
            observers.add(o);
        }
        void notifyObservers() {
            for (int i=0 ; i<observers.size() ; i++) {
                Observer o = (Observer)observers.get(i);
                o.update();
            }
        }
    }

	class ProgressView implements Observer {
		int count = 0;
		String printValue = "";

		public void countUp(int v) {
			count += v;
			printValue = String.valueOf(count);
		}

		@Override
		public void update() {
			System.out.print("\n\n経過時間:");
			System.out.print(printValue + "[sec]");
		}
	}

	class ResultView implements Observer {
		public long getStartTime() {
			return startTime;
		}

		public void setStartTime(long startTime) {
			this.startTime = startTime;
		}

		public long getStopTime() {
			return stopTime;
		}

		public void setStopTime(long stopTime) {
			this.stopTime = stopTime;
		}

		public int getStartValue() {
			return startValue;
		}

		public void setStartValue(int startValue) {
			this.startValue = startValue;
		}

		long startTime;
		long stopTime;
		int startValue;

		public void update() {
			System.out.println("");
			System.out.println("開始時刻:" + startTime);
			System.out.println("カウント:" + startValue);
			System.out.println("終了時刻:" + stopTime);
		}
	}

	final static long INTERVAL = 1000;
	ResultView resultView = new ResultView(); //
	ProgressView progressView = new ProgressView(); //
	Observable view = new Observable(); //
	int count; //

	// コンストラクタ
	Timer() {
		count = 12;
		resultView.setStartValue(count);
		view.addObserver(progressView); //
        view.addObserver(resultView); //
	}

	public void execute() throws Exception {
		resultView.setStartTime(System.currentTimeMillis()); //
		while (count > 0) {
			Thread.sleep(INTERVAL);
			count--;
			progressView.countUp(1); //
			 view.notifyObservers(); //
		}
		resultView.setStopTime(System.currentTimeMillis()); //
		view.notifyObservers(); //
	}

	public static void main(String[] args) throws Exception {
		Timer app = new Timer();
		app.execute();
	}
}

以上是关于java ネストした型やインターフェースの例的主要内容,如果未能解决你的问题,请参考以下文章

java 継承とインターフェースの使い方阶层が1つのポリモーフィズム

java 継承とインターフェースの使い方复数レベルのポリモーフィズム

Apex スケジューラを使用したジョブのスケジュール

markdown ネストしたリレーションで,亲を保存したときに子も保存されるようにする

Python语音合成(日文翻译)

csharp IPickupインターフェースを持つコンポーネンををInjectする例