반응형
타입변환이 빈번해지면 프로그램 성능에 좋지 않다.
이를 위해 제네릭을 사용한다.
제네릭의 장점
- 컴파일 시 강한 타입 체크를 할 수 있다.
- 타입 변환을 제거한다.
제네릭의 특징
- 제네릭 타입은 두가지 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
메소드 참조
- 매개 변수의 정보 및 리턴 타입을 알아내어, 람다식에서 불필요한 매개 변수를 제거하는 것이 목적
- 정적 메소드인 경우 클래스 :: 메소드
- 인스턴스 메소드인 경우 참조변수 ::메소드
반응형
'Develop' 카테고리의 다른 글
이것이 자바다 - IO 기반 입출력 및 네트워킹 (0) | 2020.02.22 |
---|---|
Java9 Java10 특징 찾아보기 (0) | 2020.02.22 |
이것이 자바다 - 스트림과 병렬처리 (0) | 2020.02.22 |
이것이 자바다 - 컬렉션 프레임워크 (0) | 2020.02.22 |
이것이 자바다 - 멀티 스레드 (0) | 2020.02.22 |
댓글