달력

5

« 2025/5 »

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31

'Java'에 해당되는 글 1

  1. 2017.12.08 Java8 의 특징 1
2017. 12. 8. 21:16

Java8 의 특징 Java2017. 12. 8. 21:16

Lambda expressions

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

Example

  1. // Before
  2. Runnable oldRunner = new Runnable(){
  3. public void run(){
  4. System.out.println("I am running");
  5. }
  6. };
  7.  
  8. // After
  9. Runnable java8Runner = () -> {
  10. System.out.println("I am running");
  11. };

Method Reference

  • 특정 람다 표현식을 축약한 것으로 볼 수 있다
  • 메서드 정의를 활용하여 람다처럼 사용 가능하다

Example

  1. // Before
  2. inventory.sort((Apple a1, Apple a2) -> a1.getWeight().compareTo(a2.getWeight()));
  3.  
  4. // After
  5. inventory.sort(comparing(Apple::getWeight));
  6.  
  7. /*
  8. Lamda -> Method Reference
  9. (Apple a) -> a.getWeight Apple::getWeight
  10. () -> Thread.currentThread().dumpStack() Thread.currentThread()::dumpStack
  11. */

Stream

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

Example

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

Parallel Stream

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

Example

  1. shapes.parallelStream().forEach(s -> doSomething());

Default Method

  • 인터페이스의 구현체를 인터페이스 자체에서 기본으로 제공 가능하다
  • 구현 클래스에서 인터페이스를 구현하지 않아도 된다

Example

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

Optional

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

CompletaleFuture

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

New date / time APIs

  • Joda-Time의 많은 기능을 java.time 패키지로 추가했다
    • LocalDate, LocalTime, Instant, Duration, Period …


:
Posted by Habba