Java 9, 10 주요 변경점

JDK 9

1. 인터페이스에 private 메서드 추가

이전 history
Java 8 버전에서는 인터페이스에 default, static 메서드가 추가 되었었다.
 
내용
Java 9 버전에서는 인터페이스에 private 메서드가 추가되었다.
 
코드

 
추상 클래스 vs 인터페이스
- 둘 다 객체로 만들 수 없다.
- 추상클래스는 public, protected, private 가능하지만, 인터페이스는 public, private 가능
- 추상클래스에는 멤버변수 선언 가능, 인터페이스는 public static 변수만 선언 가능
- 추상클래스는 extends 1개 가능, 인터페이스는 implements 여러개 가능
 
 

2. try-with-resources 문법, effectively final 변수

이전 history
Java 7 이전에는 try-catch-finally 문법을 사용했지만,
Java 7 부터 try-catch-finally 의 문제점을 개선한 try-with-resources 가 도입되었다.
(자원 반납과 에러 스택 트레이스에 대한 문제점이 개선됨)
 
내용
try-with-resources 문법에서 Java 8 버전까지는 try 괄호 안에 변수를 넣으면 에러
Java 9 부터 try 괄호 안에 effectively final 변수는 넣을 수 있게 되었다.
 
코드

try-with-resources 문법은 당연하게도..
AutoCloseable 를 상속받은 BufferedReader 변수라 가능한 것이다.
(TODO: try-catch-finally vs try-with-resources 포스팅)
 
 

3. Java Collection 에 팩토리 메서드 of 추가

내용
Java Collection 의 각 타입에 팩토리 메서드 of 가 추가 되어
가변인자로 생성하는 방법이 직관적으로 변했다.
 
코드

 
 

4. Arrays 클래스에 compare, mismatch 메서드 추가

Arrays.compare()
두 Array 를 파라미터로 받아서 어느 배열이 사전적(lexicographical)으로 우선되냐를 비교한다.
 
Arrays.mismatch()
두 Array 를 파라미터로 받아서 몇번째 인덱스부터 다른지 비교하여 리턴해준다.
 
 

JDK 10

1. var

로컬 변수 타입 추론이 가능해졌다.
 
코드

 
참고
Jdk 11 부터 람다식의 파라미터에 var 키워드를 사용할 수 있게 되었다.
하지만, Jdk 8 에서 람다식이 도입 될 때 부터 파라미터 타입 추론 기능은 존재 했었다.

 
 

'Java' 카테고리의 다른 글

Java 16 주요 변경점  (0) 2023.05.20
Java 11 ~ 15 주요 변경점  (0) 2023.05.19
불변 객체 validation  (1) 2023.05.07
불변 객체, lombok @Value 와 Java Record  (0) 2023.05.07
[Java 정리] ThreadLocal  (0) 2022.10.19