내부클래스와 람다식

Jiyeong·2022년 2월 15일
0

JAVA

목록 보기
20/31
post-thumbnail

내부클래스

  • 클래스 안에 클래스가 있는 형태
  • 외부클래스에서만 쓰는 클래스를 내부에 선언
  • 여러 변수를 모아 객체 형식을 클래스로 정의하기 위한 것

내부클래스의 종류

  • static 클래스는 외부클래스의 인스턴스 변수를 가져다 사용할 수 없음 => 왜냐하면 static 클래스는 외부클래스와 상관없이 생성되기 때문
  • local(지역) 내부클래스

getRunnable() = Runnable한 타입을 반환하는 메서드

익명 내부클래스는 하나의 인터페이스나 abstract 클래스 생성 시 사용
익명 내부클래스는 안드로이드 위젯에서 사용

지역 메서드 안에 선언된 변수는 모두 상수가 됨

람다식(Lambda expression)

자바에서 함수형 프로그래밍(functional programming)을 구현하는 방식
자바 8부터 지원
클래스를 생성하지 않고 함수의 호출만으로 기능 수행

함수형 프로그래밍

함수를 기반으로 구현하여 순수 함수(Pure function)를 구현하고 호출하여 외부 자료에 부수적인 영향을 주지 않고 매개 변수만을 사용하도록 만듦.

입력 받은 자료를 기반으로 수행되고 외부에 영향을 미치지 않으므로 병렬 처리 등에 가능

안정적인 확장성이 있는 프로그래밍 방식

람다식 구현하기

  • 익명 함수 만들기

  • 매개 변수와 매개 변수를 활용한 실행문으로 구현
    (매개변수) -> (실행문)

  • 매개 변수가 하나일 때 자료형과 괄호 생략 O

  • 매개 변수가 두 개 이상일 때 괄호 생략 X

  • 중괄호 안의 구현부가 한 문장인 경우 중괄호 생략

  • 중괄호 안의 구현부가 한 문장이라도 있다면 return문은 중괄호 생략 불가

  • 중괄호 안의 구현부에 반환문이 하나라면 return과 중괄호 모두 생략 가능

함수형 인터페이스(Lambda expression)

  • 람다식을 선언하기 위한 인터페이스
  • 익명 함수와 매개 변수만으로 구현되므로 단 하나의 메서드만을 가져야 함
    (두 개 이상의 메서드인 경우 어떤 메서드의 호출인지 모호해짐)
  • @FunctionalInterface : 함수형 인터페이스
    ojo 하나의 메서드만 구현 가능하므로, 두 개 이상 만들 시 오류가 난다!

함수형 인터페이스로 익명 함수를 만들어 메서드 호출 가능

profile
깃스타가 되고 싶은 벨플루언서

0개의 댓글