개발/Spring

Java 8의 새로운 것들, 변경된 것들.

728x90

람다 표현식

함수형 인터페이스

스트림

옵셔널

인터페이스의 기본 메소드

날짜 관련 클래스들 추가

병렬 배열 정렬 

StringJoiner 추가

 

 

Oprional 이라는 단어는 우리 나라말로 선택적인 이라는 말

 

선택적으로 뭔가를 처리할 때 사용한다는 것을 예상할 수 있다.

 

Opeional은 함수형언어인 Haskell과 Scala에서 제공하는 기능을 따온 것이다.

 

객체를 편리하게 처리하기 위해서 만든 클래스이다. java.util 패키지에 선언되어 있다.

 

public final class Optional <T>

extends Object

 

 Object 클래스를 확장했고 final클래스로 선언되어 있으며 Generic한 클래스이다 final로 선언되어 있는게 무슨 의미 일까?

 

final 변수는 변경 불가능하지만 ,final 클래스로 선언했다고 해서 내용 변경이불가능 한 것은 아니다. 대신 추가적인 확장이 불가능 하다.

즉 자식 클래스를 만들 수 없다.

 

Optional 클래스에 대해서 이해하려면 하나의 깡통이라고 생각하면 된다

이 깡통에 물건을 넣을 수 도 있고 아무 물건이 없을 수 도 있다.

 

그래서 기본적인 깡통을 만들기 위해서 객체를 생성하지 않는다.

 

 

 

 

메소드가 하나만 존재하는 인터페이스는 @FunctionalInterface로 선언할 수 있으며ㅣ, 이 인터페이스를 람다 표현식으로 처리할 수 있다.

(매개변수목록) -> 처리식으로 람다를 표현하며, 처리식이 한 줄 이상일 때에는 처리식을 중괄호로 묶을 수 있다.

 

 

java.util.function 패키지

 

java 8에서 제공하는 주요 Functional 인터페이스는 java.util.function 패키지에 다음과 같이 있다.

 

Predicate : test()라는 메소드가 있으며, 두 객체를 비교할 때 사용하고 boolean을 리턴한다. 추가로 and(), negate(), or()이라는 default 메소드가 구현되어 있으며, isEqual()이라는 static 메소드도 존재한다.

 

Supplier : get() 메소드가 있으며, ge

Consumer

Function

UnaryOperator

BinaryOperator

 

 

 

 

 

 

'개발 > Spring' 카테고리의 다른 글

Spring 라이브러리  (0) 2021.03.07
아파치 톰캣  (0) 2021.03.07
자바 Java 제네릭 Generic  (0) 2021.03.05
자바 I/O  (0) 2021.03.05
가비지 컬렉터  (0) 2021.03.01