본문 바로가기
💾 Backend/자바

💖자바 람다식💖

by 정람지 2023. 6. 27.

자바는 클래스 안에 기능을 구현한 메서드를 만든 후 클래스를 생성해 메소드를 호출해야 함.

< = >

함수의 구현과 호출만으로 프로그램을 만들 수 있는 방식인 함수형 프로그래밍(함수 외부에 있는 변수를 사용하지 않아 외부영향X,안정,확장성 있음)

 

자바에서 제공하는 " 함수형 프로그래밍"

❣️람다식❣️

함수 이름이 없는 익명 함수 만들기

(매개변수) -> {실행문;}

ex)

int add(int a, int b){
	return a+ b;
}
// 람다식 체인지
(int a , int b) -> {return x+y;}

+ 매개변수 자료형 생략 가능

(x,y) -> {return x+y;}

+ 매개변수 하나인 경우 괄호 생략 가능

nlist -> {System.out.println(nlist);}

+ 중괄호 구현부가 한문장인 경우 중괄호 생략 가능(return문은 불가능)

nlist -> System.out.println(nlist);

+ 중괄호 구현부가 return문 하나일 경우 중괄호와 return문 모두 생략(식만 작성)(;도 생략)

(x,y) -> x+y

❣️람다식 사용하기

인터페이스(함수형 인터페이스) 를 만들고

인터페이스에 람다식으로 구현할 추상 메서드를 선언

이때 오직 하나의 (추상) 메서드만 있어야 함!

public interface 함수형인터페이스{
	int 단하나의추상메서드(매개변수);
}
public class 테스트클래스{
	public static void main(String args[]){
    	함수형인터페이스 람다 = 람다식
        람다.단하나의추상메서드(매개변수); #사용
    }
}

+

오류 방지를 위해 함수형 인터페이스 위에

@FuntionalInterface 어노테이션 사용!

 

+

클래스를 따로 생성해서 인터페이스를 구현하는 방식보다 훵씬 간결함

 

어떻게 객체 없이 인터페이스의 구현만으로 사용할 수 있을까?

익명 클래스가 생성되고 이를 통해 익명 객체가 생성되는 것!

+메서드 호출이 끝나면 메모리에서 사라지기 때문에 외부 메서드의 지역 변수 변경 불가(출력은 가능)


❣️함수를 변수처럼 사용하는 람다식

- 인터페이스형 변수에 대입하여 사용 가능

- 매개변수처럼 전달 가능 (매개변수를 인터페이스형으로)

- 메서드의 반환값으로 쓰일 수 있음

'💾 Backend > 자바' 카테고리의 다른 글

💗바이트 단위 스트림/문자 단위 스트림💗  (0) 2023.07.06
💖자바 입출력💖  (0) 2023.06.30
💞Static 정적 멤버💞  (0) 2023.06.10
💞모듈/패키지💞  (0) 2023.06.09
💖자바 내부 클래스💖  (1) 2023.06.02