자바는 클래스 안에 기능을 구현한 메서드를 만든 후 클래스를 생성해 메소드를 호출해야 함.
< = >
함수의 구현과 호출만으로 프로그램을 만들 수 있는 방식인 함수형 프로그래밍(함수 외부에 있는 변수를 사용하지 않아 외부영향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 |