728x90
728x90
함수형 프로그래밍 방식 (FP, Functional Programming)
- 함수를 기반으로 하는 프로그래밍 입력 방식
- 매개변수로 전달받는 입력 외에는 외부 자료를 사용하지 않음
→ 여러 자료가 동시에 수행되는 '병렬 처리' 가능
- 순수 함수를 구현하고 호출함
→ 외부 자료에 부수적인 영향(side-effect)을 주지 않도록 구현함
- 컴파일러는 데이터 타입을 추론할 수 있음
→ 코드를 간소화해서 사용하는 '람다 표현식' 등장
람다 표현식 (Lambda expression)
1 2 3 4 5 6 7 8 9 10 11 | // 기본 형식 () -> {실행코드;}; // 매개변수가 있다면 (매개변수1, ...) -> {실행코드;}; // 매개변수가 하나라면 () 생략 가능 매개변수1 -> {실행코드;}; // 구현부가 1줄이라면 {}도 생략 가능 매개변수1 -> 실행코드; | cs |
# 람다식을 사용하기 위한 선행 조건
: 하나의 추상 메서드만 존재하는 인터페이스가 먼저 생성되어 있어야 함 (함수형 인터페이스)
→ 오류를 막기 위해 인터페이스에 @FunctionalInterface라는 어노테이션을 지정할 것
: 추상 메서드가 하나만 존재하도록 하는 제약
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 | // 예시 // 인터페이스 @FunctionalInterface public interface IAdd { int cal(int a, int b); } ---------------- // main public static void main(String[] args) { // 인터페이스로 인해 매개변수 타입 추론 가능 -> 생략 // return 키워드로 인해 반환값 타입 추론 가능 -> 생략 IAdd iAdd = (x, y) -> {return x + y;}; // 해당 식을 iAdd에 저장 // 추상 메서드 구현 int result = iAdd.cal(10, 10); | cs |
1 2 3 4 5 | // Thread도 람다 표현식으로 간단하게 사용 가능 new Thread(() -> { // run 메서드 안에 들어갈 실행코드 ㅈ }).start(); | cs |
320x100
반응형
'Java > Base' 카테고리의 다른 글
[Java] 데이터 형식 지정 (0) | 2023.04.20 |
---|---|
[Java] 스트림 (Stream) (0) | 2023.04.07 |
[Java] 래퍼 클래스 (Wrapper class) (0) | 2023.03.22 |
[Java] 웹 페이지의 JSON을 가져와 DB 테이블에 삽입하기 (0) | 2023.03.16 |
[Java] Gson 클래스를 활용한 JSON Phasing (0) | 2023.03.15 |