JavaRush /Java Blog /Random-KO /ํด๋กœ์ €์™€ ์ฝœ๋ฐฑ. ์กฐ์–ธ์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค.
Konkistador
๋ ˆ๋ฒจ 28

ํด๋กœ์ €์™€ ์ฝœ๋ฐฑ. ์กฐ์–ธ์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค.

Random-KO ๊ทธ๋ฃน์— ๊ฒŒ์‹œ๋˜์—ˆ์Šต๋‹ˆ๋‹ค
B. Eckel์˜ ์ €์„œ "Closures and Callbacks" ์ฃผ์ œ์— ๋Œ€ํ•œ "Inner Classes" ์žฅ์—๋Š” ๋‹ค์Œ ์ฝ”๋“œ ์˜ˆ์ œ๊ฐ€ ๋‚˜์™€ ์žˆ์Šต๋‹ˆ๋‹ค. //innerclasses/Callbacks.java // ะ˜ัะฟะพะปัŒะทะพะฒะฐะฝะธะต ะฒะฝัƒั‚ั€ะตะฝะฝะธั… ะบะปะฐััะพะฒ // ะดะปั ั€ะตะฐะปะธะทะฐั†ะธะธ ะพะฑั€ะฐั‚ะฝั‹ั… ะฒั‹ะทะพะฒะพะฒ package innerclasses; interface Incrementable { void increment(); } // ะŸะ ะžะกะขะž ั€ะตะฐะปะธะทัƒะตะผ ะธะฝั‚ะตั€ั„ะตะนั: class Callee1 implements Incrementable { private int i = 0; public void increment() { i++; System.out.println(i); } } class MyIncrement { public void increment() { System.out.println("ะ”ั€ัƒะณะฐั ะพะฟะตั€ะฐั†ะธั"); } public static void f(MyIncrement mi) { mi.increment(); } } // ะ•ัะปะธ ะฒะฐัˆ ะบะปะฐัั ะดะพะปะถะตะฝ ะฒั‹ะทั‹ะฒะฐั‚ัŒ ะผะตั‚ะพะด increment() // ะฟะพ-ะดั€ัƒะณะพะผัƒ, ะฝะตะพะฑั…ะพะดะธะผะพ ะธัะฟะพะปัŒะทะพะฒะฐั‚ัŒ ะฒะฝัƒั‚ั€ะตะฝะฝะธะน ะบะปะฐัั class Callee2 extends MyIncrement { private int i = 0; private void increment1() { super.increment(); i++; System.out.println(i); } private class Closure implements Incrementable { public void increment() { // ะฃะบะฐะทั‹ะฒะฐะตั‚ัั ะผะตั‚ะพะด ะฒะฝะตัˆะฝะตะณะพ ะบะปะฐััะฐ, ะธะฝะฐั‡ะต // ะฒะพะทะฝะธะบะฐะตั‚ ะฑะตัะบะพะฝะตั‡ะฝะฐั ั€ะตะบัƒั€ัะธั: Callee2.this.increment1(); } } Incrementable getCallbackReference() { return new Closure(); } } class Caller { private Incrementable callBackReference; Caller(Incrementable cbh) { callBackReference = cbh; } void go() { callBackReference.increment(); } } public class Callbacks { public static void main(String[] args) { Callee1 c1 = new Callee1(); Callee2 c2 = new Callee2(); MyIncrement.f(c2); Caller caller1 = new Caller(c1); Caller caller2 = new Caller(c2.getCallbackReference()); caller1.go(); caller1.go(); caller2.go(); caller2.go(); } } ์ปดํŒŒ์ผ๋Ÿฌ๋Š” Callee2 ํด๋ž˜์Šค์˜ increment() ๋ฉ”์„œ๋“œ๋ฅผ ์žฌ์ •์˜ํ•  ์ˆ˜ ์—†๋‹ค๊ณ  ๋ณด๊ณ ํ•ฉ๋‹ˆ๋‹ค. ๋” ๋‚ฎ์€ ์•ก์„ธ์Šค ๊ถŒํ•œ์„ ํ• ๋‹นํ•˜๋ ค๊ณ  ํ–ˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ์ด๋Š” ์ดํ•ดํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. Java์—์„œ๋Š” ์ƒ์† ์ค‘์— ๊ฐ€์‹œ์„ฑ์„ ๋†’์ด๋Š” ๋ฐฉํ–ฅ์œผ๋กœ๋งŒ ์•ก์„ธ์Šค ์ˆ˜์ •์ž๋ฅผ ๋ณ€๊ฒฝํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ž‘๊ฐ€๊ฐ€ ์ „๋‹ฌํ•˜๊ณ  ์‹ถ์—ˆ๋˜ ๊ฒƒ์ด ๋ฌด์—‡์ธ์ง€ ๋งํ•ด ๋ณด์„ธ์š”. ์—ฌ๊ธฐ์„œ ์˜คํƒ€๊ฐ€ ์–ด๋””์— ์žˆ์Šต๋‹ˆ๊นŒ?
์ฝ”๋ฉ˜ํŠธ
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION