본문 바로가기
Develop

이것이 자바다 - 제네릭 & 람다

by _dreamgirl 2020. 2. 22.
반응형

타입변환이 빈번해지면 프로그램 성능에 좋지 않다.

이를 위해 제네릭을 사용한다.

 

제네릭의 장점

  • 컴파일 시 강한 타입 체크를 할 수 있다.
  • 타입 변환을 제거한다.

 

제네릭의 특징

  • 제네릭 타입은 두가지 class<T>, interface<T>
  • 두 개 이상의 멀티 타입 파라미터를 사용할 수 있고, 각 타입 파라미터를 콤마로 구분
  • 제네릭 메소드 : 매개 타입과 리턴 타입으로 타입 파타미터를 갖는 메소드

 

       Public <타입파라미터..> 리턴타입 메소드명(매개변수…){ }

public <T> Box<T> boxing(T t) { … }

 

       Box<Integer> box = <Integer>boxing(100);

Box<Integer> box = boxing(100);

 

  • 제한된 타입 파라미터 : extends 상위타입
  • 와일드카드 타입<?> 
  • 제네릭 타입의 상속과 구현

 

람다

 

  • 자바8부터 람다식을 지원
  • 람다식은 익명 함수를 생성하기 위한 식으로 객체 지향 언어보다는 함수 지향 언어에 가깝다
  • 자바 코드가 매우 간결해지고 컬렉션의 요소를 필터링하거나 매핑해서 원하는 결과를 쉽게 집계 할 수 있음

 

람다식 기본 문법

(타입 매개변수, … ) -> { 실행문; ….}

 

함수적 인터페이스(@FunctionalInterface)

  • 매개 변수와 리턴값이 없는 람다식
  • 매개 변수가 있는 람다식
  • 리턴값이 있는 람다식

 

 

클래스 멤버와 로컬 변수 사용

 

클래스의 멤버 사용

  • 람다식에서 This는 내부적으로 생서오디는 익명 객체의 참조가 아니라 람다식을 실행한 객체의 참조다

로컬 변수 사용

  • 메소드의 매개 변수 또는 로컬 변수를 사용하면 이 두 변수는 Final 특성을 가져야 한다.

 

 

표준 API의 함수적 인터페이스

 

  • Consumer : 매개값은 있고, 리턴값이 없음
  • Supplier : 매개값은 없고, 리턴값이 있음
  • Function : 매개값도 있고, 리턴값도 있음. 주로 매개값을 리턴값으로 매핑(타입 변환)
  • Operator : 매개값도 있고, 리턴값도 있음. 주로 매개값을 연산하고 결과를 리턴
  • Predicate : 매개값도 있고, 리턴값은 boolean. 매개값을 조사해서 true/false로 리턴
  • andThen, compose 메소드
  • Predicate 의 함수적 인터페이스 : and, or, negate, isEqual, minBy, maxBy

 

 

메소드 참조

  • 매개 변수의 정보 및 리턴 타입을 알아내어, 람다식에서 불필요한 매개 변수를 제거하는 것이 목적
  • 정적 메소드인 경우 클래스 :: 메소드
  • 인스턴스 메소드인 경우 참조변수 ::메소드
반응형

댓글