JAVA, 람다식

람다식 (JAVA8 ~)

  • 자바에서 함수형 프로그래밍을 구현하는 방식
  • 함수형 프로그래밍이란
    • 외부 변수를 사용하지 않는다
    • 그렇기때문에 외부에 다른 영향을 주지 않는다. 따라서 병렬처리가 가능해진다
  • 클래스를 생성하지 않고 함수의 호출만
  • 함수를 변수처럼 사용하는 람다식

interface PrintString{
	void showString(String str);
}

public class TestLambda {

	public static void main(String[] args) {
		PrintString lambdaStr = s->System.out.println(s);
		lambdaStr.showString("hi");

		showMyString(lambdaStr);

		// 구현부가 대입된다
		PrintString test = returnString();
		test.showString("hi3");
	}

	// 매개변수로 활용되었고, 바로 구현된것이 실행된다
	public static void showMyString(PrintString p) {
		p.showString("hi2");
	}

	// 함수의 구현부가 마치 변수 처럼 반환될수있다
	public static PrintString returnString() {
		return s->System.out.println(s+"!!!");
	}
}


  • 예제
package LambdaPart;

public class StringConcatTests {
	public static void main(String[] args) {
		StringConImpl impl = new StringConImpl();
		impl.makeString("ab", "cd");

		StringConcat concat = (s,v) -> System.out.println("[lambda] : "+s+v);
		concat.makeString("ab", "cd");
	}
}
/*
결과
[original] : abcd
[lambda] : abcd
*/
package LambdaPart;

//함수형 인터페이스라고 지정
@FunctionalInterface
public interface StringConcat {
	// 함수형 인터페이스는 ★함수 하나만★ 선언
	public void makeString(String s1,String s2);
}
package LambdaPart;

public class StringConImpl implements StringConcat {

	@Override
	public void makeString(String s1, String s2) {
		System.out.println("[original] : "+ s1 +s2);
	}
}

Reference

  • fastcampus