의뢰에서 lambda 표현식 소개 (왜 lambda 표현식이 필요합니까)

5002 단어 java8

다음에 필자는 간단한 말투로java8의 새로운 특성, lambda 표현식을 소개할 것이다.


가장 간단한 방법으로 왜 lambda 표현식이 필요한지 알려드릴게요.

간단하게 의뢰를 설명하자면'방법을 매개 변수로 전달한다'는 것이다.


출처:


프로그램에 코드를 전송하는 방법이 필요할 때가 있습니다.예:
public class MainClass(){
    public static final void test(){
        if(true){
            //           
            //            
            //……
            //     
        }else if{
            //      
        }
    }
}

어떤 원인 때문에if의 코드는 반드시 빈번하게 수정해야 한다.이럴 때는 방법을 대상의 방법에 적고 대상을 프로그램에 전송해서 대응하는 방법을 사용해야 한다.(재구성)
public class MainClass(){
    public static final void test(MilkSender c){
        if(true){
            c.sendMilk();
        }else if{
            //      
        }
    }
}
public class MilkSender (){
    public void sendMilk(){
        //           
        //            
        //……
        //     
    }
}

MainClass.test(new MilkSender());

이 때 우리는 테스트의 코드를 하드코딩으로 수정하지 않아도 '방법에서 사용자 정의 인코딩을 실행할 수 있다' 는 효과를 얻을 수 있다.하지만 이제 우리는 MyClass 대상 중의 한 가지 방법만 필요합니다. MyClass 대상 전체를 다 넣으면 좀 어지러워 보입니다. 한 가지 방법만 전달할 수 있는 방법은 없을까요?답은 있다. 인터페이스 하나만 입력하면 된다.
public static final void test(MyClassInterface c){
    if(true){
        c.doSomething();
    }
}

public interface MyClassInterface (){
    public void doSomething();
}

이런 형식의 인코딩을 우리는 잠시 방법 의뢰라고 부른다.(이런 명칭은 C/C++에서 유래했기 때문)

이렇게 하면 매번 직접 '익명 대상' 을 만들 수 있다

MainClass.test(new MyClass(){
    @Override
    public void doSomething(){
        System.out.println("good1");
    }
);
MainClass.test(new MyClass(){
    @Override
    public void doSomething(){
        System.out.println("good2");
    }
);

이런 형식의 인코딩을 우리는 익명 대상 인코딩이라고 부른다.

응, 좀 예뻐졌는데 아직도 불편해 보여.


때로는 코드 한 마디가 필요할 뿐인데 적어도 다섯 줄의 코드를 썼다.(가독성과'고도'문제를 가져왔다) 그래서'고도 문제'를 해결하기 위해 우리는 lambda 표현식을 도입했다.
public void main(String[] args){
    DamnedDesigner.test(()->System.out.println("good1"));
    DamnedDesigner.test(()->System.out.println("good2"));
}

원래 지루했던 코드가 단번에 뚜렷하고 간결하며 빠르게 변했다.
lambda 표현식은 자바뿐만 아니라 C#, C++ 등 일반적인 프로그래밍 언어에도 적용된다.lambda 표현식은java8의 가장 큰 하이라이트입니다.(콜록콜록, 10년 정도 뒤지고 시작했지만).자바8은 국내에서 보급률이 상당히 낮지만 필자는 이것이 미래의 추세가 될 것이라고 믿는다.
방법 의뢰가 무엇인지, 익명 대상이 무엇인지, lambda 표현식이 무엇인지 이미 알고 있다.(lambda 표현식이 실용적이냐고 물어보면 대단해!)lambda 표현식의 구체적인 소개는 다음 편을 보십시오.

좋은 웹페이지 즐겨찾기