[Java 8] 람다 표현식과 메서드 레퍼런스

2023. 4. 12. 23:03· BE/Java
목차
  1. 람다 표현식(Lambda Expression)
  2. 메서드 레퍼런스(Method Reference)
반응형

더 자바, Java 8

 

이 포스팅에서 작성하는 내용은 더 자바, Java 8 에서 발췌하였습니다.

 

https://www.inflearn.com/course/the-java-java8

 

더 자바, Java 8 - 인프런 | 강의

자바 8에 추가된 기능들은 자바가 제공하는 API는 물론이고 스프링 같은 제 3의 라이브러리 및 프레임워크에서도 널리 사용되고 있습니다. 이 시대의 자바 개발자라면 반드시 알아야 합니다. 이

www.inflearn.com

 


람다 표현식(Lambda Expression)

  • (인자) -> {함수 몸체}
    • 인자가 없어도, () 로 표현
    • 인자가 하나라면, 소괄호 생략 가능
    • 인자가 여러개라면, (a, b)
    • 인자에 타입을 명시할 수 있음(컴파일러가 추론)
      (Integer a, Integer b)
    • 함수 몸체 부분에 함수 동작을 명시
    • 한 줄인 경우, 중괄호와 return 생략 가능
      a -> a+10
  • 변수 참조
    • 지역 변수를 참조하는 경우에는, final OR effective final 타입만 가능하다.
    • effective final : final로 선언하지 않았지만 해당 변수가 재할당되지 않는 경우 Java에서 알아서 final로 간주. (Java 8부터 지원)
import java.util.function.UnaryOperator;

public class Example3 {
	public static void main(String[] args) {
		
		// 람다 표현식 기본 형식
		UnaryOperator<Integer> plus100_1 = (num) -> {
			return num+100;
		};
		
		// 인자가 하나일 경우, 인자쪽에 괄호 제거
		UnaryOperator<Integer> plus100_2 = num -> {
			return num+100;
		};
		
		// 리턴 식이 하나의 식일 경우 중괄호 및 return 생략 가능
		UnaryOperator<Integer> plus100_3 = num -> num+100;
		
		System.out.println(plus100_1.apply(50));
		System.out.println(plus100_2.apply(50));
		System.out.println(plus100_3.apply(50));
	}
}

 

 

 

메서드 레퍼런스(Method Reference)

  • 클래스의 메서드를 간결하게 표현하는 방법
  • 아래 예제와 같이 타입 :: 메서드 이름 으로 표현한다.
public class CustomString {
    private String str;

    public CustomString() {}

    public CustomString(String str){
        this.str = str;
    }

    public String name(String str) {
        return "name : " + str;
    }

    public static String staticPrint(String str) {
        return "staticPrint : " + str;
    }

    public String getStr() {
        return str;
    }
}
import java.util.function.Function;
import java.util.function.Supplier;
import java.util.function.UnaryOperator;

public class Example3 {

	public static void main(String[] args) {
    
		/** Method Reference **/
		// 1. 기본 static Method 참조 방법
		String str1 = CustomString.staticPrint("Animal");

		UnaryOperator<String> uo1 = CustomString::staticPrint;
		String str2 = uo1.apply("Animal");
		System.out.println(str1);
		System.out.println(str2);


		// 2. 기본 Method 참조 방법
		CustomString cs = new CustomString();
		String str3 = cs.name("Human");

		UnaryOperator<String> uo2 = cs::name;
		String str4 = uo2.apply("Human");
		System.out.println(str3);
		System.out.println(str4);


		// 3. 생성자를 호출하는 방법(입력값이 없는 생성자)
		CustomString cs2 = new CustomString();

		Supplier<CustomString> supplier = CustomString::new;
		CustomString cs3 = supplier.get();


		// 4. 생성자를 호출하는 방법(입력값이 있는 생성자)
		CustomString cs4 = new CustomString("Earth");

		Function<String, CustomString> function = CustomString::new;
		CustomString cs5 = function.apply("Earth");
	}

}
반응형

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

[Java 8] stream  (0) 2023.04.14
[Java 8] Default Method, Java 8의 NEW 기본 메서드  (0) 2023.04.13
[Java 8] Java 8과 함수형 인터페이스  (0) 2023.04.11
[Mockito] Mockito  (0) 2023.04.05
[Java] Jar파일에 있는 파일 읽기  (0) 2023.03.31
  1. 람다 표현식(Lambda Expression)
  2. 메서드 레퍼런스(Method Reference)
'BE/Java' 카테고리의 다른 글
  • [Java 8] stream
  • [Java 8] Default Method, Java 8의 NEW 기본 메서드
  • [Java 8] Java 8과 함수형 인터페이스
  • [Mockito] Mockito
멍목
멍목
개발 관련 새롭게 알게 된 지식이나 좋은 정보들을 메모하는 공간입니다.
반응형
멍목
김멍목의 개발블로그
멍목
전체
오늘
어제
  • 분류 전체보기 (514)
    • BE (190)
      • Spring (21)
      • Java (141)
      • Kotlin (6)
      • JPA (22)
    • FE (33)
      • Javascript (16)
      • Typescript (0)
      • React (5)
      • Vue.js (9)
      • JSP & JSTL (3)
    • DB (32)
      • Oracle (22)
      • MongoDB (10)
    • Algorithm (195)
    • Linux (8)
    • Git (6)
    • etc (42)
    • ---------------------------.. (0)
    • 회계 (4)
      • 전산회계 2급 (4)
    • 잡동사니 (2)

블로그 메뉴

  • 홈
  • 관리

공지사항

인기 글

태그

  • 자바 공부
  • Java to Kotlin
  • 자기공부
  • MongoDB with Node.js
  • 전산회계 2급 준비
  • MongoDB 공부
  • JPA 공부
  • 프로젝트로 배우는 Vue.js 3
  • 알고리즘 공부
  • 더 자바 Java 8
  • 자바 테스팅 프레임워크
  • 이펙티브자바
  • Oracle
  • 자바공부
  • 알고리즘공부
  • 코테 공부
  • Effective Java
  • 이펙티브 자바
  • 자기 개발
  • 자기개발
  • 코테공부
  • JPA
  • java 8
  • vue3 공부
  • 코틀린
  • junit5
  • 더 자바 애플리케이션을 테스트하는 다양한 방법
  • 자기 공부
  • 자바 개발자를 위한 코틀린 입문
  • MongoDB 기초부터 실무까지

최근 댓글

최근 글

hELLO · Designed By 정상우.v4.2.0
멍목
[Java 8] 람다 표현식과 메서드 레퍼런스
상단으로

티스토리툴바

개인정보

  • 티스토리 홈
  • 포럼
  • 로그인

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.