[ ๋๋ค (Lambda) ]
- ์๋ฐ8 ์ดํ ๋ฑ์ฅํ ๋๋ค์์ ์ต๋ช ํด๋์ค์ ๋นํด ๊ฐ๊ฒฐ
- ๋๋ค๋ ํ์ ์ปดํ์ผ๋ฌ์์ ๋ฌธ๋งฅ์ ์ดํด ํ์ ์ถ๋ก .
- ํ์ ์ถ๋ก ์ ํ์ํ ๋๋ถ๋ถ์ ์ ๋ณด๋ฅผ ์ ๋ค๋ฆญ์์ ๊ฐ์ ธ์ค๊ธฐ ๋๋ฌธ์
์ ๋ค๋ฆญ์ด ์์ ๊ฒฝ์ฐ ์ผ์ผํ ํ์ ์ ๋ช ์ํด ์ฃผ์ด์ผ ํจ.
- ์์ ๊ฐ์ด ํ์ ์ ๋ช ์ํ ๋๋ฅผ ์ ์ธํ๊ณ ๋๋ค์์ ๋ชจ๋ ๋งค๊ฐ๋ณ์ ํ์ ์ ์๋ต
- ๋๋ค๋ ์ด๋ฆ์ด ์์ผ๋ฉฐ ๋ฌธ์ํ๋ ๋ถ๊ฐ (์ต๋ช ํด๋์ค์ ์ ์ฌํจ)
๋ฐ๋ผ์ ์ฝ๋์ ์ค์ด ๊ธธ์ด์ง๊ฑฐ๋ ๋ช ํํ์ง ์๋ค๋ฉด ๋๋ค์์ ์ฌ์ฉ์ ํผํด์ผ ํจ
- ์ถ์ ๋ฉ์๋๊ฐ ์ฌ๋ฌ๊ฐ์ธ ์ธํฐํ์ด์ค์ ๊ฐ์ฒด ์์ฑ์์ ์ต๋ช ํด๋์ค๋ฅผ ์ฌ์ฉํด์ผ ํจ
- ๋๋ค์์ this ํค์๋๋ ์ธ๋ถ ๊ฐ์ฒด๋ฅผ ๊ฐ๋ฆฌํจ๋ค.
ํจ์ ๊ฐ์ฒด ์์ ์ ์ฐธ์กฐํ ๊ฒฝ์ฐ ์ต๋ช ํด๋์ค๋ฅผ ์ฌ์ฉํด์ผ ํจ
[ ์๋ฐ ๋๋ค ํํ์ ์์ฑ ]
[ ๋๋ค ํํ์ ์ ์ ์ฌํญ ]
- ๋งค๊ฐ๋ณ์๊ฐ ํ๋์ธ ๊ฒฝ์ฐ ๊ดํธ ์๋ต ๊ฐ๋ฅ
- ํจ์ ๋ชธ์ฒด๊ฐ ํ๋์ ๋ช ๋ น๋ฌธ๋ง์ผ๋ก ์ด๋ฃจ์ด์ง ๊ฒฝ์ฐ ์ค๊ดํธ ({}) ์๋ต ๊ฐ๋ฅ
- ํจ์์ ๋ชธ์ฒด๊ฐ ํ๋์ return๋ฌธ์ผ๋ก ์ด๋ฃจ์ด์ง ๊ฒฝ์ฐ ์ค๊ดํธ ({}) ์๋ต ๊ฐ๋ฅ
[ ๋ฌธ๋ฒ ]
( ๋งค๊ฐ๋ณ์ ๋ชฉ๋ก ) -> { ํจ์ ๊ตฌํ๋ถ }
[ ๋๋ค์ ์์ ]
public class TestCode{
public static void main(String[] args) {
// -- ๊ธฐ์กด ๋ฐฉ์์ ์ค๋ ๋ ์์ฑ ์์ --
new Thread(new Runnable() {
public void run() {
System.out.println("์ ํต์ ๋ฐฉ์์ ์ผํ์ฉ ์ค๋ ๋ ์์ฑ");
}
}).start();
// -- ๋๋ค์์ ์ด์ฉํ ์ค๋ ๋ ์์ฑ ์์ --
new Thread(()-> {
System.out.println("๋๋ค์ ์ค๋ ๋ ์์ฑ");
}).start();
}
}
/* [์ถ๋ ฅ ๊ฒฐ๊ณผ]
์ ํต์ ๋ฐฉ์์ ์ผํ์ฉ ์ค๋ ๋ ์์ฑ
๋๋ค์ ์ค๋ ๋ ์์ฑ
*/
[ ํจ์ํ ์ธํฐํ์ด์ค (functional interface) ]
ํจ์ํ ์ธํฐํ์ด์ค์์ ๋๋ค์์ ์ฌ์ฉํ ๋๋ ์์ ์ ์ฅํ๊ธฐ ์ํ ์ฐธ์กฐ ๋ณ์์ ํ์ ์ ๊ฒฐ์ ํด์ผํจ
// ์ฐธ์กฐ๋ณ์ํ์ ์ฐธ์กฐ๋ณ์๋ช = ๋๋ค ํํ์ Animal animal = (dog, num) -> System.out.println(dog + "๋ " + num + "๋ฒ ์ง์ต๋๋ค." );โ
๋๋ค ํํ์์ ํ๋์ ๋ณ์์ ๋์ ํ ๋ ์ฌ์ฉํ๋ ์ฐธ์กฐ ๋ณ์ํ์ ์ ํจ์ํ ์ธํฐํ์ด์ค๋ผ ํจ
ํจ์ํ ์ธํฐํ์ด์ค๋ ์ถ์ํด๋์ค์ ๋ฌ๋ฆฌ ๋จ ํ๋์ ์ถ์ ๋ฉ์๋๋ง์ ๊ฐ์ ธ์ผ ํจ
@FunctionalInterface ์ด๋ ธํ ์ด์ ์ ํตํด ํจ์ํ ์ธํฐํ์ด์ค์์ ๋ช ์ํด ์ค๋ค.
[ ํจ์ํ ์ธํฐํ์ด์ค ์์ ]
@FunctionalInterface
interface Animal{
abstract void display(String dog, int num);
}
class CAnimal implements Animal{
@Override
public void display(String dog, int num) {
System.out.println(dog + "๋ " + num + "๋ฒ ํ์ฐฎ๊ฒ ์ง์ต๋๋ค." );
}
}
public class TestCode{
public static void main(String[] args) {
// ๋๋ค์์ ์ฌ์ฉํ ํจ์ํ ์ธํฐํ์ด์ค์ ํํ
Animal animal = (dog, num) -> System.out.println(dog + "๋ " + num + "๋ฒ ์ง์ต๋๋ค." );
animal.display("์๋์ฐ์ ", 4);
CAnimal animal2 = new CAnimal();
animal2.display("์น์์", 2);
}
}
/* [์ถ๋ ฅ ๊ฒฐ๊ณผ]
์๋์ฐ์ ๋ 4๋ฒ ์ง์ต๋๋ค.
์น์์๋ 2๋ฒ ํ์ฐฎ๊ฒ ์ง์ต๋๋ค.
*/