package com.cos.board.test;
// JavaScript๋ Function์ด 1๊ธ ๊ฐ์ฒด, ๋ณ์๋ฅผ ์ด๋์๋ ์ ์ธํ ์ ์๋ค.
// Java์ 1๊ธ ๊ฐ์ฒด๋class๊ฐ ์ ์ผ, ํจ์๋ฅผ ๋งค๊ฐ๋ณ์๋ก ๋๊ธธ ์ ์๋ค.
interface SendEventListener {
// 1. return ๋ฐ๊ณ ์ถ์ ๋ฐ์ดํฐ ํ์
์ ๋งค๊ฐ๋ณ์๋ก ์
๋ ฅ.
public abstract void callback(int money);
}
class ํ์ ์ {
private int money = 10;
public void send(SendEventListener sendEventListener) { // 2. ํจ์๋ฅผ void๋ก ๋ณ๊ฒฝ , ์ค๋ ๋๋ฅผ ์ฐ๋ ์๊ฐ ๋ฆฌํดํ์ ์๋ค. callback, ์ข
๋ฃ๋ฅผ ์๋ ค์ค.
// 3. ํด๋น ํจ์์ ๋งค๊ฐ๋ณ์๋ก SendEventListener๋ฅผ ์
๋ ฅ
// try {
// Thread.sleep(3000);
// } catch (Exception e) {
// e.printStackTrace();
// } ๋ฉ์ธ์ค๋ ๋๊ฐ ์ฃฝ์ผ๋ฉด ๋ค๊ฐ์ด ๋๋ ์ด ๋จ.
new Thread(new Runnable() {
// ์๋ก์ด ์ค๋ ๋
@Override
public void run() {
try {
Thread.sleep(3000);
money += 20;
// 4. ์๋ก์ด ์ค๋ ๋ ์ข
๋ฃ์์ callbackํจ์ ๋ก์ถ
sendEventListener.callback(money);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}).start(); // ์ต๋ช
์ ์ค๋ ๋, ์ค๋ ๋๋ฅผ ์ฐ๋ ค๋ฉด new ํด์ผํจ. start๋ฉ์๋๋ run์ ๋ถ๋ฆ. new ์ค๋ ๋ ๋งค๊ฐ๋ณ์๋ก ๋ฌ๋๋ธ ํ์ผ์ ๋ฃ์ด์ฃผ์ด์ผ ํจ.
}
}
public class Text5 {
// ๋ฉ์ธ์ฐ๋ ๋
public static void main(String[] args) {
ํ์ ์ u = new ํ์ ์();
u.send(new SendEventListener() { // ํจ์๋ฅผ ๋ชป๋๊ธฐ๊ธฐ ๋๋ฌธ์ ์ธํฐํ์ด์ค๋ฅผ ๋๊น.
@Override
public void callback(int money) {
System.out.println("money : "+money);
}
});
System.out.println("ํ ๋ฃฝ!");
}
//์๋ฐ์คํฌ๋ฆฝํธ์ $('์ ํ์').on(๋๊ธฐ๋ฐ์ ์ก์
, ์ก์
์ด ๋์์๋ ์คํํ ํจ์) ์ค๋ ๋์ ๊ฐ๋
๊ณผ ๋น์ทํ๋ค.
}