본문 바로가기
Language/Java

Functional Interface & Lambda(작성중)

by ilyadelavie 2022. 7. 18.

개요

추상 메서드 한개만 갖는 인터페이스

 

사용 목적

람다식 사용하기 위해

 

주요 인터페이스

ㅇㅇ

 

 

Lambda

기본형

(left,right) -> Math.max(left,right);

메서드 참조

public class Calculator {
  public static int staticMethod(int x, int y) {
  	return x + y;
  }
  public int instanceMethod(int x, int y) {
  	return x * y;
  }
}

//정적 메서드 참조
IntBinaryOperator operator;
operator = Calculator::staticMethod;
System.out.println(operator.applyAsInt(3,5));

//인스턴스 메서드 참조
Calculator cal = new Calculator();
operator = cal::instanceMethod;
System.out.println(operator.applyAsInt(3,5));

생성자 참조

public class Member{
	private String name;
    private String id;
    
    public Member(){
    	System.out.println("Member() 실행");
    }
    public Member(String id){
   		this.id = id;
    	System.out.println("Member(String id) 실행");
    }
    public Member(String name, String id) {
        System.out.println("Member(String name, String id) 실행");
        this.id = id;
        this.name = name;
    }
    public String getName() {
       	return name;
    }
    public String getId() {
        return id;
  	}
  }
}
public class ConstructorRef {
	public static void main(String[] args) throws Exception {
        Function<String, Member> function1 = Member::new;
        Member member1 = function1.apply("kimcoding");

        BiFunction<String, String, Member> function2 = Member::new;
        Member member2 = function2.apply("kimcoding", "김코딩");
  }
}

'Language > Java' 카테고리의 다른 글

Stream 생성 방법  (0) 2022.07.18
자료형 변환(작성중)  (0) 2022.07.15
[Collection] Map.Entry의 사용(작성중)  (0) 2022.07.15