느린 것을 걱정하지 말고, 멈춰서는 것을 걱정하라
article thumbnail
Published 2019. 12. 25. 14:30
Java 람다 표현식, 람다 함수란? IT/JAVA

 최근, 아니 2, 3년 전부터 한국에서 자바8과 관련하여 함수형 프로그래밍을 배워야 한다는 이슈가 회사내에 있었던 것으로 기억한다. 그로부터 몇년이 지난 지금 다시 개발자로 이직을 하려니 자바8과 관련된 질문을 많이 받고 이에 대한 대답을 하지 못해 면접에서 떨어진 경우가 많았다. 

 

 그러므로 앞으로 매일 1시간 이상 자바8 이후에 나온 기능들에 대해 살펴보고 테스트 하는 시간을 가지며, 간간히 포스팅 하는 시간을 갖고자 한다. 이 포스팅은 그 첫번째 포스팅이다.

 

자바 8 이후 여러 기능이 나왔지만 그중 가장 많이 쓰이고 있는 기술은 람다식이라고 한다. 람다식이란 기존에 동작파라미터로 객체를 넘겨주는 방식을 대신해서 다음과 같이 익명 메서드를 넘겨준다. 

 

람다식 표현법

(매개변수, ...) -> { 실행문 ... }

 

 위의 람다 표현법으로 메서드를 넘겨주는 것을 익명 메서드라고도 부르는데 익명메서드를 람다 함수라고도 부른다. 익명 메서드는 일반 코드블록과 달리 파라미터가 있는 코드블록이며, 주입받는 클래스내에 있는 함수형 인터페이스를 구현해준다. 함수형 인터페이스란 단 하나의 메소드를 구현하도록 한 메소드이며 이를 명확히 하기 위해 @FunctionalInterface 어노테이션을 설정한다.

 

자, 그럼 개념은 어느정도 숙지되었으니 람다식을 사용하지 않았을때와 사용하였을 때의 테스트를 진행해 보도록 하겠다.

 

[테스트]

@FunctionalInterface
interface MyInterfaceb {
	public int add(int x,int y);
}


public class Test {

	public int add(int x, int y, MyInterfaceb m) {
		return m.add(x, y);
	}

	public static void main(String[] args) {
		Test t = new Test();
		
		//람다식 사용하지 않음
		int r1=t.add(1, 2, new MyInterfaceb() {
			
			@Override
			public int add(int x, int y) {
				return x+y;
			}
		});
		
		//람다식 사용
		int r2=t.add(1, 2, (int x, int y)->(x+y));
		
		System.out.println("r1 : "+r1);
		System.out.println("r2 : "+r2);
	}

}

 

[결과]

 

 

 

 

 

 

 

 

변수 r1을 구하는 인터페이스를 구현한 객체를 넘겨주는 방식이고 r2 코드는 람다식을 구현한 코드이다. 기존의 방식은 객체를 구현하는 과정을 거쳐야 하기 때문에 소스코드가 많아지지만 람다식을 사용할 경우 코드가 적어진다. 

 

즉, 객체 생성의 부분의 코드를 줄여서 코드의 경량화가 이루어졌고 이로인해 비즈니스 로직만 남아서 어떠한 동작을 구현하는지 명확해졌다.

 

람다식의 목적 코드의 경량화라는 것을 기억하기로 하며 이번 포스팅을 마친다.

profile

느린 것을 걱정하지 말고, 멈춰서는 것을 걱정하라

@주현태

포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!