Explain
람다식 - Lambda Expression
: 자바에서 함수형 프로그래밍을 구현하는 방식 (자바 8부터 지원)
: 클래스를 생성하지 않고 함수의 호출만으로 기능을 수행
'함수형 프로그래밍' 이란?
: 순수함수를 구현하고 호출함으로써 외부 자료에 부수적인 영향없이 매개변수만을 사용하도록 만든 함수
: 외부에 영향을 미치지 않아 병렬처리 등에 사용이 가능 (+확장성 / +안정적)
<간단한 람다식 사용방법>
일반 함수에서는
int add(int x, int y)
{
return x + y;
]
처럼 구현이 되지만,
람다식에서는
(int x, int y) -> {return x + y;}
처럼 간단히 구현할 수 있다.
매개변수가 1개이냐, 2개이냐에 따라 혹은 반환하는 값에 따라 중괄호의 여부가 달라지지만
기본적인 구조는 이와 같은 것이다.
"매개변수 -> return 반환값"
자바는 객체지향언어로, 객체를 생성해야 메서드가 호출되는 구조이다.
람다식을 사용할때 메서드를 구현하고 호출한다는 것은
"내부에서 익명클래스가 생성되고 그 안에 구현부가 존재한다"는 뜻이기도 하다.
Example
1. 기존 객체지향 프로그래밍 방식으로 구현
<StringConcat.java>
package chapter13_lambda;
@FunctionalInterface
public interface StringConcat {
public void makeString(String s1, String s2);
}
기능을 구현할 메서드를 선언하기 위해 인터페이스를 생성해준다.
<StringConcatImpl.java>
package chapter13_lambda;
public class StringConcatImpl implements StringConcat {
@Override
public void makeString(String s1, String s2) {
System.out.println(s1 + " " + s2);
}
}
StringConcat 인터페이스에 대한 Implements를 구현하기위해
StringConcat 을 상속받은 클래스를 만들어준다.
<TestStringConcat.java>
package chapter13_lambda;
public class TestStringConcat {
public static void main(String[] args) {
// 1번 방법. 객체지향 프로그래밍 방식 구현
StringConcatImpl sImpl = new StringConcatImpl();
sImpl.makeString("1번방법", "Java Study");
}
}
메인함수에서 s1 + " " + s2 의 메서드가 제대로 작동하는지 확인한다. (makeString)

2. 람다식으로 구현한 방법
<StringConcat.java>
package chapter13_lambda;
@FunctionalInterface
public interface StringConcat {
public void makeString(String s1, String s2);
}
StringConcat 인터페이스 사용.
<TestStringConcat.java>
package chapter13_lambda;
public class TestStringConcat {
public static void main(String[] args) {
// 2번 방법. 람다식 구현
StringConcat concat = (s1, s2) -> System.out.println(s1 + " " + s2);
concat.makeString("2번방법", "Java Study");
}
}
(s1, s2) -> System.out.println(s1 + " " + s2); 으로 람다식을 표현한다.

3. 익명클래스를 사용한 방법
<StringConcat.java>
package chapter13_lambda;
@FunctionalInterface
public interface StringConcat {
public void makeString(String s1, String s2);
}
StringConcat 인터페이스 사용.
<TestStringConcat.java>
package chapter13_lambda;
public class TestStringConcat {
public static void main(String[] args) {
// 3번 방법. 익명클래스를 사용한 방법
StringConcat concat2 = new StringConcat() {
@Override
public void makeString(String s1, String s2) {
System.out.println(s1 + " " + s2);
}
};
concat2.makeString("3번방법", "Java Study");
}
}
new 키워드로 생성 시 makeString을 생성하여 구현하는 방법이다.

전체 비교 구현 코드
<TestStringConcat.java>
package chapter13_lambda;
public class TestStringConcat {
public static void main(String[] args) {
// 1번 방법. 객체지향 프로그래밍 방식의 기존 방식으로 구현
StringConcatImpl sImpl = new StringConcatImpl();
sImpl.makeString("1번방법", "Java Study");
// 2번 방법. 람다식 구현
StringConcat concat = (s1, s2) -> System.out.println(s1 + " " + s2);
concat.makeString("2번방법", "Java Study");
// 3번 방법. 익명클래스를 사용한 방법
StringConcat concat2 = new StringConcat() {
@Override
public void makeString(String s1, String s2) {
System.out.println(s1 + " " + s2);
}
};
concat2.makeString("3번방법", "Java Study");
}
}

내부클래스인 람다식에 대해 예제를 통해 공부할 수 있었다. 메서드를 호출하여 구현하는 방식에서도 다양한 방식이 있음을 알 수 있었고, 람다식과 익명클래스의 구조적인 상관관계도 확인할 수 있었다.
'Programming > Java_자바' 카테고리의 다른 글
[Java 기초] 자바 변수 (0) | 2025.01.12 |
---|---|
[Java 기초] '자바'를 공부하면서 알아야 할 것 (0) | 2024.12.01 |
[JAVA 기초] Comparable 와 Comparator 인터페이스 (0) | 2022.01.17 |
[JAVA 기초] 스택(Stack), 큐(Queue), 해시세트(HashSet) 구현 및 실습 (0) | 2022.01.16 |
[JAVA 기초] Collection 인터페이스 (컬렉션 인터페이스)와 ArrayList 예제 실습 (0) | 2022.01.15 |
Explain
람다식 - Lambda Expression
: 자바에서 함수형 프로그래밍을 구현하는 방식 (자바 8부터 지원)
: 클래스를 생성하지 않고 함수의 호출만으로 기능을 수행
'함수형 프로그래밍' 이란?
: 순수함수를 구현하고 호출함으로써 외부 자료에 부수적인 영향없이 매개변수만을 사용하도록 만든 함수
: 외부에 영향을 미치지 않아 병렬처리 등에 사용이 가능 (+확장성 / +안정적)
<간단한 람다식 사용방법>
일반 함수에서는
int add(int x, int y)
{
return x + y;
]
처럼 구현이 되지만,
람다식에서는
(int x, int y) -> {return x + y;}
처럼 간단히 구현할 수 있다.
매개변수가 1개이냐, 2개이냐에 따라 혹은 반환하는 값에 따라 중괄호의 여부가 달라지지만
기본적인 구조는 이와 같은 것이다.
"매개변수 -> return 반환값"
자바는 객체지향언어로, 객체를 생성해야 메서드가 호출되는 구조이다.
람다식을 사용할때 메서드를 구현하고 호출한다는 것은
"내부에서 익명클래스가 생성되고 그 안에 구현부가 존재한다"는 뜻이기도 하다.
Example
1. 기존 객체지향 프로그래밍 방식으로 구현
<StringConcat.java>
package chapter13_lambda;
@FunctionalInterface
public interface StringConcat {
public void makeString(String s1, String s2);
}
기능을 구현할 메서드를 선언하기 위해 인터페이스를 생성해준다.
<StringConcatImpl.java>
package chapter13_lambda;
public class StringConcatImpl implements StringConcat {
@Override
public void makeString(String s1, String s2) {
System.out.println(s1 + " " + s2);
}
}
StringConcat 인터페이스에 대한 Implements를 구현하기위해
StringConcat 을 상속받은 클래스를 만들어준다.
<TestStringConcat.java>
package chapter13_lambda;
public class TestStringConcat {
public static void main(String[] args) {
// 1번 방법. 객체지향 프로그래밍 방식 구현
StringConcatImpl sImpl = new StringConcatImpl();
sImpl.makeString("1번방법", "Java Study");
}
}
메인함수에서 s1 + " " + s2 의 메서드가 제대로 작동하는지 확인한다. (makeString)

2. 람다식으로 구현한 방법
<StringConcat.java>
package chapter13_lambda;
@FunctionalInterface
public interface StringConcat {
public void makeString(String s1, String s2);
}
StringConcat 인터페이스 사용.
<TestStringConcat.java>
package chapter13_lambda;
public class TestStringConcat {
public static void main(String[] args) {
// 2번 방법. 람다식 구현
StringConcat concat = (s1, s2) -> System.out.println(s1 + " " + s2);
concat.makeString("2번방법", "Java Study");
}
}
(s1, s2) -> System.out.println(s1 + " " + s2); 으로 람다식을 표현한다.

3. 익명클래스를 사용한 방법
<StringConcat.java>
package chapter13_lambda;
@FunctionalInterface
public interface StringConcat {
public void makeString(String s1, String s2);
}
StringConcat 인터페이스 사용.
<TestStringConcat.java>
package chapter13_lambda;
public class TestStringConcat {
public static void main(String[] args) {
// 3번 방법. 익명클래스를 사용한 방법
StringConcat concat2 = new StringConcat() {
@Override
public void makeString(String s1, String s2) {
System.out.println(s1 + " " + s2);
}
};
concat2.makeString("3번방법", "Java Study");
}
}
new 키워드로 생성 시 makeString을 생성하여 구현하는 방법이다.

전체 비교 구현 코드
<TestStringConcat.java>
package chapter13_lambda;
public class TestStringConcat {
public static void main(String[] args) {
// 1번 방법. 객체지향 프로그래밍 방식의 기존 방식으로 구현
StringConcatImpl sImpl = new StringConcatImpl();
sImpl.makeString("1번방법", "Java Study");
// 2번 방법. 람다식 구현
StringConcat concat = (s1, s2) -> System.out.println(s1 + " " + s2);
concat.makeString("2번방법", "Java Study");
// 3번 방법. 익명클래스를 사용한 방법
StringConcat concat2 = new StringConcat() {
@Override
public void makeString(String s1, String s2) {
System.out.println(s1 + " " + s2);
}
};
concat2.makeString("3번방법", "Java Study");
}
}

내부클래스인 람다식에 대해 예제를 통해 공부할 수 있었다. 메서드를 호출하여 구현하는 방식에서도 다양한 방식이 있음을 알 수 있었고, 람다식과 익명클래스의 구조적인 상관관계도 확인할 수 있었다.
'Programming > Java_자바' 카테고리의 다른 글
[Java 기초] 자바 변수 (0) | 2025.01.12 |
---|---|
[Java 기초] '자바'를 공부하면서 알아야 할 것 (0) | 2024.12.01 |
[JAVA 기초] Comparable 와 Comparator 인터페이스 (0) | 2022.01.17 |
[JAVA 기초] 스택(Stack), 큐(Queue), 해시세트(HashSet) 구현 및 실습 (0) | 2022.01.16 |
[JAVA 기초] Collection 인터페이스 (컬렉션 인터페이스)와 ArrayList 예제 실습 (0) | 2022.01.15 |