내일배움캠프 17일차 TIL - 함수형 인터페이스, 익명 클래스

2024. 5. 9. 18:49·⛺스파르타코딩클럽

240509

# 오늘 꼭 기억 해야 할 것!

오늘의 학습 

    ●  1. 람다 표현식

    ●  2. 함수형 인터페이스

    ●  3. 익명 클래스

    ●  4. 스트림

 

1. 함수형 인터페이스

함수형 인터페이스는 람다식을 다루기 위해서 사용하는 것이다.

함수형 인터페이스는 단 하나의 추상 메서드만 선언된 인터페이스이다.

@FunctionInterface 애너테이션을 생략이 가능하지만 @Override처럼 함수형 인터페이스라는 것을 검증해주기 때문에

꼭 붙혀 주는것이 좋다.

@FunctionInterface // 함수형 인터페이스 검증 애너테이션
public interface MyFunction {
	int max(int a, int b);
}

 

2. 익명 클래스

자바에서는 함수형 인터페이스와 익명클래스를 이용하여 클래스 내부에서 클래스를 구현할 수 있다.

@FunctionInterface // 함수형 인터페이스 검증 애너테이션
public interface MyFunction {
	int max(int a, int b);
}

public class AnonymousClass {
	public static void main(String[] args) {
    	// 인터페이스 객체로 생성 후 바로 익명클래스로 바로 구현
		MyFunction myFunction = new MyFunction() {
			@Override
			public int max(int a, int b) {
				return a + b;
			}
		};
		int result = myFunction.max(1, 3);
		System.out.println(result); // => 결과값 : 4
	}
}

람다 표현식은 익명 클래스를 더 간결하게 작성하는 방법 중 하나로 볼 수 있습니다. 일반적으로 함수형 인터페이스를 구현하는 경우에는 익명 클래스 대신 람다 표현식을 사용하는 것이 권장됩니다. 코드가 더 간결해지고 가독성이 향상됩니다.

 

3. 함수형 인터페이스를 이용한 람다 표현식

 

@FunctionInterface // 함수형 인터페이스 검증 애너테이션
public interface MyFunction {
	int max(int a, int b);
}

public class AnonymousClass {
	public static void main(String[] args) {
    	MyFunction f = (a, b) -> a + b;
        int a = f.max(1, 3);
        System.out.println(a); // 결과값 => 4
	}
}

람다를 이용하여 이러한 방식으로 인터페이스 타입으로 받아서 연산을 처리 할 수 있다.

 

 

# 오늘의 회고

오늘은 람다와 스트림 함수형 인터페이스와 익명 클래스를 공부하였다.

람다에서 막히는 부분이 많았지만 그래도 어느정도 이해를 하게 되었다.

'⛺스파르타코딩클럽' 카테고리의 다른 글

내일배움캠프 19일차 TIL - Iterator  (0) 2024.05.12
내일배움캠프 18일차 TIL - 람다(메서드 참조, 생성자 참조)  (0) 2024.05.10
내일배움캠프 16일차 TIL - 개인 공부  (2) 2024.05.07
내일배움캠프 15일차 TIL - 과제 피드백(Calculator)  (1) 2024.05.03
내일배움캠프 14일차 TIL - 웹(Stateless, Stateful)  (1) 2024.05.02
'⛺스파르타코딩클럽' 카테고리의 다른 글
  • 내일배움캠프 19일차 TIL - Iterator
  • 내일배움캠프 18일차 TIL - 람다(메서드 참조, 생성자 참조)
  • 내일배움캠프 16일차 TIL - 개인 공부
  • 내일배움캠프 15일차 TIL - 과제 피드백(Calculator)
junbin2
junbin2
java.lang.NullPointerException
  • junbin2
    bin's Development Diary
    junbin2
  • 전체
    오늘
    어제
    • 전체보기 (139) N
      • 🎓방송통신대학교 (24) N
        • 🖥️컴퓨터과학과 (1)
        • 🌍유비쿼터스 컴퓨팅 (9) N
        • ⚙️컴퓨터의 이해 (11)
        • 🏛️세계의정치와경제 (3)
      • 📚Computer Science (0)
      • 🛠️Backend (2)
      • ☕Java (0)
        • 📝Java Programming (9)
        • 🧩Java Design Pattern (1)
      • 🌳Spring (9)
        • 🌱Spring Framework (6)
        • 🌱Spring Security (1)
      • ⚡Python (13)
      • 🛢️Database (0)
      • 🌿GitHub (1)
      • 🌐 Network (7)
        • 📜HTTP (7)
      • 🚀DevOps (1)
      • Algorithm Problem Solving (2)
      • Data Structure (1)
      • JavaScript (1)
      • ⛺스파르타코딩클럽 (65)
      • 잡담 (1)
      • 정리가 필요한 글 (2)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

    • GitHub
  • 공지사항

  • 인기 글

  • 태그

    Spring Framework
    자바
    방송통신대학교
    유비쿼터스
    방통대
    클라우드
    파이썬
    함수
    세계화
    유비쿼터스 컴퓨팅
    메모리
    Python
    방송대
    스프링
    컴파일러
    유비쿼터스 컴퓨팅개론
    컴퓨터의 이해
    Java
    클래스
    spring
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.1
junbin2
내일배움캠프 17일차 TIL - 함수형 인터페이스, 익명 클래스
상단으로

티스토리툴바