JAVA8 특징
Lambda expressions
- 람다 표현식은 Anonymous Function라고 할 수 있다.
- 람다를 이용하여 코드를 간결하게 할 수 있다.
Method Reference
특정 람다 표현식을 축약한 것으로 볼 수 있다.
메서드 정의를 활용하여 람다처럼 사용 가능하다.
Stream API
간결하게 컬렉션의 데이터를 처리하는 기능
Example
12345678910// BeforeList<Shape> list = new ArrayList<Shape>();for (Shape s : shapes) {if (s.getColor() == RED) {list.add(s);}}// Aftershapes.stream().filter(s -> s.getColor() == Red).collect(toList());cs Parallel Stream
- 위 Stream을 병렬로 처리가능하도록 하는 기능
- 여러 쓰레드에서 처리할 수 있도록 분할한 Stream 이다.
Example
1shapes.parallelStream().forEach(s -> doSomething());cs
Default Method
인터페이스의 구현체를 인터페이스 자체에서 기본으로 제공
구현 클래스에서 인터페이스를 구현하지 않아도 된다.
java8에서의 인터페이스와 추상클래스의 차이점
- 추상 클래스는 인스턴스 변수로 공통상태를 가짐. 반면 인터페이스는 변수(필드)를 가질 수 없다.
- 추상클래스는 하나만 상속가능하지만 인터페이스는 여러 개를 구현 가능.
- 디폴트 메서드를 포함하는 인터페이스를 여러 개 구현할 수 있다는 것은 자바에서도 다중 상속을 지원하게 되었다는 뜻.
Example
1234567public interface Sized {int size();default boolean isEmpty() { // Default Methodreturn size() == 0;}}cs
Optional
- 값을 Optional
로 캡슐화하여 NullPointerException을 막는다 - 값이 존재한다면 Optional 클래스는 값을 감싼다.
- 값이 없다면 Optional.empty메서드로 Optional을 리턴한다.
- 값을 Optional
completable
Future의 기능을 확장시켜준다.
- 두 개의 비동기 계산 결과를 하나로 합친다.
- 각 계산 결과는 독립적이거나 종속적일 수 있다.
- Future 집합이 실행하는 모든 태스크의 완료를 기다린다.
- Future 집합에서 가장 빨리 완료되는 태스크를 기다렸다가 결과를 얻는다.
- Future가 완료되면 추가 작업을 수행 할 수 있다.
- New date / time APIs
'면접질문들' 카테고리의 다른 글
it 기술면접 질문들(계속 업데이트) (0) | 2020.03.01 |
---|---|
프로세스와 쓰레드의 차이 (1) | 2019.03.25 |