본문 바로가기

Java/information

[자바/JAVA] 람다식과 열거형

람다 표현식

람다식이란 익명 함수를 생성하기 위한 식으로서 코드를 간결하게 만들기 위해 사용한다.


-이름없는 함수: 나중에 한 번 이상 실행할 수 있도록 만들어 놓는 코드 블록
-함수의 역할을 하지만 이름이 없음
형태
(매개변수)->{수행되어야 하는 코드}
-기호 '->'는 람다 연산자라고 부르고 '->' 왼쪽에는 함수의 매개변수를 적고 오른쪽에는 함수가 반환할 값 또는 식을 적음

업데이트 장,단점
장점 : 코드가 간결해짐
단점 : 코드가 너무 간결해지면서 무슨 의미인지 알수가없을정도로 심플해짐

람다 표현식 사용
-람다 표현식을 구현한 인터페이스는 함수형 인터페이스
-함수형 인터페이스에는 추상 메소드만 한 개 있어야함
-지연 처리 : 인터페이스 변수에 람다 표현식을 할당하고, 호출하면 그제서야 람다 표현식이 수행

자바는 자바 8부터 람다식(lambda expression)을 지원하기 시작했고, 람다식은 익명함수를 생성하기 위한 식으로 함수지향 언어에 가깝다.

사용이유는 자바 코드가 매우 간결해지기 때문이다.
Runnable 인터페이스의 익명 구현 객체를 생성하는 전형적인 코드는 
 Runnable runnable = new Runnable(){
  public void run(){...}
  } 
이것을 람다식으로 표현한면
  Runnable runnable = () -> {...} 이다.
중괄호 안에 return문만 있을 경우에는 람다식에서는 return문을 생략한다. 하지만 여러줄의 실행코드를 구현하는 경우에는 반드시 중괄호로 묶고 마지막에 세미콜론을 넣어야 한다

람다식이 대입될 인터페이스를 람다식의 타겟 타입(target type)이라고 한다. 람다식이 하나의 메소드를 정의하기 때문에 두 개 이상의 추상 메소드가 선언된 인터페이스는 람다식을 이용해서 구현 객체를 생성할 수 없고 하나의 추상 메소드가 선언된 인터페이스만이 람다식의 타겟 타입이 될 수 있는데 이것을 함수적 인터페이스(functional interface)라고 한다.

람다 표현식 사용순서
-인터페이스 만들기
-인터페이스 참조 변수 만들기
-인터페이스 참조 변수에 람다 표현식 할당하기
-람다 표현식 수행시키기(지연 처리)

제너릭 함수형 인터페이스(Generic Functional Interface)
하나의 람다 표현식에 다양한 자료형을 적용할 수 있도록 하는 것을 제네릭 함수형 인터페이스라고 한다.
제네릭 : 다양한 자료형을 사용할 수 있도록 하는 기능

Enumeration : 셈, 열거, 계산, 목록의 앞글자만 따서 만든 예약어로 열거형(enumerated type)이라고 부른다.
서로 연관된 상수들의 집합
 enum 열거형의 이름{...} =>enum클래스는 조상 클래스가 가지고 있는 values(), valueOf(), ordinal() 메소드(열거체를 조작하기 위한 다양한 메소드)를 사용할 수 있다.
-열거형은 여러개의 상수 데이터를 선언하는데 유용
-클래스 멤버중에서 상수 데이터는 public static 데이터인데, 이를 한꺼번에 선언할 수 있도록 함.
열거형의 모든 상수 데이터를 출력할 때에는 values()와 valueOf()메소드 사용
values():enum이 가지고 있는 모든 상수를 배열을 생성해서 반환
valueOf("문자열")은 매개변수 문자열과 일치하는 열거체의 상수를 반환한다. 없으면 예외 발생됨
ordinal():해당 열거체 상수가 열거체 정의에서 정의된 순서(0부터 시작)를 반환


'Java > information' 카테고리의 다른 글

[자바/JAVA] annotation  (0) 2023.10.15
[자바/JAVA] Thread  (0) 2023.06.15
[자바/JAVA] 컬렉션 프레임워크  (0) 2023.06.09
[자바/JAVA] Iterator와 ListIterator  (0) 2023.06.08
[자바/JAVA] 제네릭 컬렉션 프레임워크  (0) 2023.06.03