본문 바로가기
JAVA

람다식 간략한 특징

by brilliant-growth 2023. 7. 5.

람다식 특징

문법

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

1. 코드를 간결하게 만들 수 있다.

2. 코드가 간결하고 식에 개발자의 의도가 명확히 드러나므로 가독성이 향상된다.

3. 함수(메소드)를 만드는 과정없이 한 번에 처리할 수 있기에 코딩하는 시간이 줄어듭니다.

단점

1. 익명함수는 재사용이 불가능

2. 디버깅이 다소 까다롭다

3. 람다식을 남발하면 코드가 지저분해진다. (비슷한 코드의 중복 가능성 높음)

4. 재귀로 만들 경우에 다소 부족한 면이 있다 (재귀 -> 자신을 호출)

 

@FunctionalInterface

처음부터 람다식을 쓸 수 있는 인터페이스 라는 것을 처음부터 정의 할 수 있을까?

인터페이스에서 추상메소드는 단 하나여야만 람다식 사용 가능

public class LamdaEx11 {
	public static void main(String[] args) {
		
//		Supplier<T>
//		인자는 받지 않으며 리턴 타입만 존재하는 메서드
//		순수함수에서 결과를 바꾸는 것은 input 뿐이다
		Supplier<String> s = () -> "Hello Supplier";
		String result = s.get();
		System.out.println(result);
		
//		Consumer<T>
//		리턴을 하지 않고 (void) 매개변수를 받는 메서드를 갖고있다.
//		매개변수를 받아 소모 한다는 의미
		Consumer<String> c = str -> System.out.println(str);
		c.accept("hello Lamda");
		
		
//		Function<T, R>
//		전형적인 함수를 지원
//		하나의 매개변수와 리턴 타입을 갖는다
		Function<String, Integer> f = str -> Integer.parseInt(str);
		Integer result2 = f.apply("1");
		System.out.println(result2 + 100);
		
		
//		Predicate<T>
//		하나의 매개변수와 리턴타입을 갖는다.
//		리턴타입을 지정하는 타입 파라미터가 안보인다.
//		반환값은 불린
//		Function<T, Boolean> 형태와 동일
		Predicate<String> p = str -> str.isEmpty();
		boolean result3 = p.test("hello");
		System.out.println(result3);
		
		
				
	}

}

 

'JAVA' 카테고리의 다른 글

static block의 예시  (0) 2023.07.05
Iterator와 컬렉션 프레임워크  (0) 2023.06.30
자바란? getter,setter를 사용하는이유?  (0) 2023.06.30