면접질문들

Java8 변경 사항

park_juyoung 2019. 3. 26. 00:10

JAVA8 특징

  • Lambda expressions

    • 람다 표현식은 Anonymous Function라고 할 수 있다.
    • 람다를 이용하여 코드를 간결하게 할 수 있다.

    람다식에 관하여 더보기

  • Method Reference

    • 특정 람다 표현식을 축약한 것으로 볼 수 있다.

    • 메서드 정의를 활용하여 람다처럼 사용 가능하다.

       

  • Stream API

    • 간결하게 컬렉션의 데이터를 처리하는 기능

      Example

      1
      2
      3
      4
      5
      6
      7
      8
      9
      10
      // Before 
      List<Shape> list = new ArrayList<Shape>();
      for (Shape s : shapes) {
          if (s.getColor() == RED) {
              list.add(s);
          }
      }
       
      // After
      shapes.stream().filter(s -> s.getColor() == Red).collect(toList());
      cs
    • Parallel Stream

      • 위 Stream을 병렬로 처리가능하도록 하는 기능
      • 여러 쓰레드에서 처리할 수 있도록 분할한 Stream 이다.

      Example

      1
      shapes.parallelStream().forEach(s -> doSomething());
      cs
  • Default Method

    • 인터페이스의 구현체를 인터페이스 자체에서 기본으로 제공

    • 구현 클래스에서 인터페이스를 구현하지 않아도 된다.

    • java8에서의 인터페이스와 추상클래스의 차이점

      • 추상 클래스는 인스턴스 변수로 공통상태를 가짐. 반면 인터페이스는 변수(필드)를 가질 수 없다.
      • 추상클래스는 하나만 상속가능하지만 인터페이스는 여러 개를 구현 가능.
      • 디폴트 메서드를 포함하는 인터페이스를 여러 개 구현할 수 있다는 것은 자바에서도 다중 상속을 지원하게 되었다는 뜻.

    Example

    1
    2
    3
    4
    5
    6
    7
    public interface Sized {
        int size();
     
        default boolean isEmpty() {  // Default Method
            return size() == 0;
        }
    }
    cs
  • Optional

    • 값을 Optional로 캡슐화하여 NullPointerException을 막는다
    • 값이 존재한다면 Optional 클래스는 값을 감싼다.
    • 값이 없다면 Optional.empty메서드로 Optional을 리턴한다.
  • completable

    • Future의 기능을 확장시켜준다.

      • 두 개의 비동기 계산 결과를 하나로 합친다.
      • 각 계산 결과는 독립적이거나 종속적일 수 있다.
    • Future 집합이 실행하는 모든 태스크의 완료를 기다린다.
    • Future 집합에서 가장 빨리 완료되는 태스크를 기다렸다가 결과를 얻는다.
    • Future가 완료되면 추가 작업을 수행 할 수 있다.
  • New date / time APIs


'면접질문들' 카테고리의 다른 글

it 기술면접 질문들(계속 업데이트)  (0) 2020.03.01
프로세스와 쓰레드의 차이  (1) 2019.03.25