java

lambda

byeol_dev 2023. 7. 6. 12:15

λžŒλ‹€ / κΈ°μ‘΄ 방식 비ꡐ

λžŒλ‹€ μ‚¬μš© μ‹œ μ½”λ“œ κ°„κ²°ν™”

package test1;

public class OuterClass {

    int age;
    class MemberInner{} //member(Inner)Class (OuterClass μ•ˆμ— μžˆλŠ” 멀버 클래슀)

    public void aaa(){
        //λ©”μ†Œλ“œ μ•ˆμ—μ„œλ„ 클래슀 생성 κ°€λŠ₯(둜컬 클래슀)
        class  LocalClass{} //local(inner)class
    }

    public void runPrint(){
        //κΈ°μ‘΄ 방식
        //ν΄λž˜μŠ€μ— λŒ€ν•œ 객체λ₯Ό μƒμ„±ν•΄μ„œ λ©”μ†Œλ“œ 호좜
        MyPrint p = new MyPrint();
        p.print("java");

        //읡λͺ… 클래슀λ₯Ό μ‚¬μš©ν•΄μ„œ λ©”μ†Œλ“œ 호좜
        //Printable p1 = new Printable(); μΈν„°νŽ˜μ΄μŠ€λŠ” μƒμ„±μž μ—†κΈ° λ•Œλ¬Έμ— 였λ₯˜.
        Printable p1 = new Printable() {
            @Override
            public void print(String s) { //λ©”μ†Œλ“œ
                System.out.println(s);
            }
        };
        p1.print("java");

        //λžŒλ‹€ 방식(원본) printλΌλŠ” 좔상 λ©”μ†Œλ“œλ₯Ό κ΅¬ν˜„ν•œ 것
        Printable p2 = (String s) -> {   //Printable의 κ΅¬ν˜„λœ λ©”μ†Œλ“œκ°€ 2개면 λžŒλ‹€ μ‚¬μš© X
                 System.out.println(s);
            };

        p2.print("java");


    }
}

//λ©”μ†Œλ“œλ₯Ό μ“°λ €λ©΄ -> μΈν„°νŽ˜μ΄μŠ€ 객체 생성x μΈν„°νŽ˜μ΄μŠ€λ₯Ό κ΅¬ν˜„ν•  ν΄λž˜μŠ€κ°€ μžˆμ–΄μ•Ό 함.
interface Printable{
    //좔상 λ©”μ†Œλ“œ
    void print(String s);
}

class MyPrint implements Printable{

    @Override
    public void print(String s) {
        System.out.println(s);
    }
}

 

λžŒλ‹€ μ‚¬μš© ν•˜μ—¬ κ°„κ²°ν™” μ‹œν‚€λŠ”  κ³Όμ •

package test1;

interface LGprint{
    void print(String s);
}

public class Lambda1 {
    public static void main(String[] args) {
                    //λ§€κ°œλ³€μˆ˜ μ •λ³΄λŠ” λ„£μ–΄μ€˜μ•Ό 함!(λ³€μˆ˜λͺ…은 λ°”λ€Œμ–΄λ„ μžλ£Œν˜•μ€ λ³€κ²½ X)
        //λ©”μ†Œλ“œ μ •μ˜
        LGprint p1 = (String str) -> {
            //μ›ν•˜λŠ” print λ©”μ†Œλ“œμ˜ λ‚΄μš© μ½”λ“œ
            System.out.println(str);
        };

        //λ©”μ†Œλ“œ 호좜
        p1.print("java");

                    //μžλ£Œν˜• μƒλž΅ κ°€λŠ₯, () μƒλž΅ κ°€λŠ₯. (μ–΄μ°¨ν”Ό λ³€κ²½ μ•ˆλ˜κΈ° λ•Œλ¬Έμ—)
        LGprint p2 = s -> //{
            System.out.println(s + s);
        //}; μ‹€ν–‰λ¬Έ 1쀄이면 μ€‘κ΄„ν˜Έ μƒλž΅ κ°€λŠ₯
        p2.print("java");
    }

}