lambda 표현 식 사용

12073 단어 기술.자바lambda
lambda 표현 식 은 보통 클래스 나 인 터 페 이 스 를 실현 하 는 데 사 용 됩 니 다.장점 은 설명 할 필요 도 없고 다시 쓸 필요 도 없습니다.그러나 한 가지 제한 은 이 인터페이스 에 한 가지 방법 만 있 을 수 있 습 니 다.lambda 표현 식 에서 우 리 는 실 마 리 를 볼 수 있 기 때 문 입 니 다.클래스 를 직접 호출 하고 매개 변 수 를 전달 하 며 방법 명 까지 절약 할 수 있 습 니 다.한 가지 방법 만 있 는 것 이 아니라면 충돌 이 발생 하여 식별 할 수 없습니다.
자바 lambda 표현 식 의 장단 점:장점:
코드 간결,개발 신속편리 함수 식 프로 그래 밍
4.567917.병행 계산 이 매우 쉽다.
자바 lambda 도입,집합 작업 개선(Stream API 도입)단점:코드 가 독성 이 떨 어 집 니 다.2.언어 학습 곡선 이 가 파 르 고 학습 난이도 가 높 아 집 니 다4.567917.성능 에 있어 비 병행 계산 에서 많은 계산 이 반드시 전통 적 인 for 성능 이 높 은 것 은 아니다.
디 버 깅 이 쉽 지 않 습 니 다.
나 는 작은 demo 를 써 서 하나의 인터페이스 에 대해 흔히 볼 수 있 는 세 가지 실현 방식(클래스 재 작성 방법,익명 내부 클래스 실현,lambda)의 대 비 를 실현 했다.그 중에서 lambda 표현 식 을 사용 했다.
장면:button 을 클릭 하여 button 이름 을 표시 합 니 다.
OnClickListener.java
package com.hmkcode;

public interface OnClickListener {
	void onClick(Button button);
}

Button.java
package com.hmkcode;

@lombook
public class Button {

	private OnClickListener onClickListener;
	private String name;

	// click the button
	public void click(){
		this.onClickListener.onClick(this);
	}
}

실현 1:onClick 재 작성 방법
public class App implements OnClickListener
{
    public static void main( String[] args ){...}

    public void run(){
        
        Button myButton = new Button();
        myButton.setName("MyButton");
        
        // 1. implements onClickListener
        myButton.setOnClickListener(this);
        
        // click the button
    	myButton.click();
    }
	
	@Override
	public void onClick(Button button) {
		System.out.println(button.getName() +" Clicked! - implements interface");
		
	}
}

구현 2:익명 내부 클래스
public class App
{
    public static void main( String[] args ){...}

    public void run(){
        
        Button myButton = new Button();
        myButton.setName("MyButton");
                
        // 2. anonymous class
        myButton.setOnClickListener(new OnClickListener() {
			@Override
			public void onClick(Button button) {
				System.out.println(button.getName() +" Clicked! - anonymous class");
			}
		}); 
        
        // click the button
    	myButton.click();
    }
}

구현 3:lambda 표현 식:
public class App
{
    public static void main( String[] args ){...}

    public void run(){
        
        Button myButton = new Button();
        myButton.setName("MyButton");

        // 3. lambda
    	OnClickListener lambda = button -> { System.out.println(button.getName()+" Clicked! - lambda"); } ;
    	myButton.setOnClickListener(lambda);
		
        // click the button
    	myButton.click();
    } 
}

내 가 보기에 일반적인 장면 에서 for 순환 계산 처리 의 효율 은 lambda 표현 식 보다 좋 고 lambda 표현 식 은 병렬 계산,집합(흐름 처리)에 적합 하 다.집합 류 의 처 리 는 정말 편리 하 다.다만 가 독성 이 너무 떨 어 지고 debug 도 불편 하 다.

좋은 웹페이지 즐겨찾기