[자바1.8기술]람다식 Lambda

gov's avatar
Nov 20, 2024
[자바1.8기술]람다식 Lambda
 
💡
자바 메소드를 간결한 함수 식으로 표현한 것 형태 : () -> {};

특징

  1. 람다는 인터페이스로 만든다
  1. 인터페이스 메서드는 하나만 존재해야 한다
  1. 메서드가 인터페이스를 매개변수로 받고 있으면, 행위 보내기
  1. 람다는 매개변수 타입 생략 가능
  1. @FunctionalInterface(런타임) 표시가능

예시 코드

  • 소비자 MyConsumer 입력만 받고 출력이 없는 연산을 수행
public interface MyConsumer<T> { void accept(T date); }
  • MyFunction 입력을 받아서 결과를 반환 -return, 매개변수 있다 입력값 T를 받아 결과값 R을 반환
public interface MyFunction<T, R> { R apply(T t); // return값은 사용자가 지정 }
  • 조건평가 MyPredicate 조건의 참/거짓을 반환하는 인터페이스
public interface MyPredicate<T> { boolean apply(T t);
  • 공급자 Supplier 입력없이 값을 반환. 반환된 값은 소비자(=나 =호출자)가 사용
@FunctionalInterface // 메서드 2개시 에러 public interface MySupplier<T> { T get(); }

응용코드

public class App { public static void main(String[] args) { // 값이 없으면 괄호(매개변수)가 있어야 한다 // 예) 값 없을 때: () -> {} MyConsumer<Integer> r1 = (Integer date) -> { System.out.println("소비할 데이터 : " + date); }; r1.accept(1); // MySupplier<String> r2 = () -> {return "good";}; MySupplier<String> r3 = () -> "good"; // 람다표현식 -중괄호 생략 가능 String msg = r3.get(); System.out.println(msg); } }

출력

notion image
Share article

goho