What's New in JDK 8

Lambda

Java 8 이전의 익명 클래스 대신 람다를 이용하여 간결하고 직관적으로 구현 가능

// Java 8 이전
Runnable runnable = new Runnable() {
	@Override
	public void run() {
		soutp("Hello World");
  }
}

// Java 8 이후
Runnable runnableLambda = () -> soutp("Hello World");

Method Reference

특정 메서드만을 호출하는 람다의 축약형

람다메서드 레퍼런스
(Soccer s) → s.getGoal()Soccer::setGoal
() → Thread.currentThread().dumpStack()Thread.currentThread()::dumpStack
(str, i) → str.substring(i)String::substring
(String s) → System.out.println(s)System.out.println

Interface Default Method

인터페이스에서 메소드를 구현할 수 있는 default 키워드 추가.

public interface SomeInterface {
	public default void doSometing() {
		soutp("Do Someting.");
	}
}

Optional Class

NPE( Null Pointer Exception ) 이슈를 대응하기 위한 Wrapper 클래스

파라미터로 넘어가는 것 보다 반환 타입으로써 제한적으로 사용되도록 설계.

// String optStr1 = null;
Optional<String> optStr1 = Optional.empty();

// 데이터가 절대 Null이 아닌 경우
// 데이터가 null인 경우 NPE 발생
Optional<String> optStr2 = Optional.of("Optional Of");

// 데이터가 Null일 수 도 있는 경우
Optional<String> optStr3 = Optional.ofNullable("Optional Of Nullable");

Stream

Collection을 처리하면서 발생하는 모호함과 반복적인 코드 문제와 멀티코어 활용시의 어려움을 해결.

List<String> list = Arrays.asList("ABC", "DEF");
list.stream()
	.filter(name -> name.startWith("A"))
	.map(String::toUpperCase)
	.forEach(System.out::println);

출저

java 버전별 차이 & 특징

profile
백엔드 개발자 지망생

0개의 댓글