[Java 기능] 객체지향 프로그래밍 vs 람다식

2022. 2. 14. 22:00·Java & Kotlin
목차
  1. 예제 코드
  2. 익명 객체를 생성하는 람다식
  3. 함수를 변수처럼 사용하는 람다식

예제 코드

문자열 두개를 연결하여 출력하는 예제

 

StringConcat.java
package ch04;

public interface StringConcat {	// 인터페이스
	
	public void makeString(String s1, String s2);
}

 

StringConcatImple.java
package ch04;

public class StringConcatImple implements StringConcat {	// 인터페이스 구현 클래스

	@Override
	public void makeString(String s1, String s2) {
		System.out.println(s1 +',' + s2);
	}
	
}

 

StringConcatTest.java
package ch04;

public class StringConcatTest {

	public static void main(String[] args) {
		
		String s1 = "Hello";
		String s2 = "World";
		
		StringConcatImple strConcat = new StringConcatImple();	// 클래스 객체 생성하여 메서드 사용
		strConcat.makeString(s1, s2);
		
		StringConcat strConcat2 = (st1, st2) -> System.out.println(s1 +',' + s2);	// 람다식 사용
		strConcat2.makeString(s1,s2);

}

 

 

수행 결과
Hello,World
Hello,World

 

익명 객체를 생성하는 람다식

  • 자바에서는 객체 없이 메서드가 호출될 수 없음
  • 람다식을 구현하면 내부적으로 익명 내부 클래스가 생성되고 이를 통해 익명 객체가 생성됨
  • 람다식 내부에서 외부에 있는 지역변수의 값을 변경하면 오류 발생
StringConcat strConcat3 = new StringConcat() {

    @Override
    public void makeString(String s1, String s2) {	// 익명 내부 클래스
        System.out.println(s1 + "..." + s2);
    }

};

strConcat3.makeString(s1,s2);
}

 

함수를 변수처럼 사용하는 람다식

  • 인터페이스형 변수에 람다식 대입
interface PrintString {
	void showString(String str);
}
PrintString lambdaStr = s->System.out.println(s);	// 람다식을 변수에 대입
lambdaStr.showString("hello lambda");

 

  • 매개변수로 전달하는 람다식
showMyString(lambdaStr);

public static void showMyString(PrintString p) {
	p.showString("hello lambda");
}

 

  • 반환값으로 쓰이는 람다식
public static PrintString returnString() {
	return s->System.out.println(s + "World");
}

PrintString reStr = returnString();
reStr.showString("hello ");
저작자표시 비영리 변경금지 (새창열림)

'Java & Kotlin' 카테고리의 다른 글

[Java 기능] 스트림  (0) 2022.02.15
[Java 기능] 함수형 프로그래밍과 람다식 문법  (0) 2022.02.14
[Java 기능] 중첩 클래스 (2)  (0) 2022.02.14
  1. 예제 코드
  2. 익명 객체를 생성하는 람다식
  3. 함수를 변수처럼 사용하는 람다식
'Java & Kotlin' 카테고리의 다른 글
  • [Java 기능] reduce() 연산
  • [Java 기능] 스트림
  • [Java 기능] 함수형 프로그래밍과 람다식 문법
  • [Java 기능] 중첩 클래스 (2)
Sue
Sue
개발 공부 로그
Sue's devlog개발 공부 로그
  • Sue
    Sue's devlog
    Sue
  • 전체
    오늘
    어제
    • 분류 전체보기 (122)
      • Algorithm (2)
      • WEB (8)
      • Java & Kotlin (83)
      • Spring (26)
      • Database (1)
      • Infra (0)
      • Git (1)
      • devlog (1)
  • 인기 글

  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
Sue
[Java 기능] 객체지향 프로그래밍 vs 람다식

개인정보

  • 티스토리 홈
  • 포럼
  • 로그인
상단으로

티스토리툴바

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.