Java 10
2021. 8. 10. 22:45ㆍJava/버전별 변화
728x90
추가된 기능
로컬 변수 타입 추론
로컬 변수 var를 이용함으로서 컴파일러에게 타입을 추론할 수 있게 되었습니다.
public void test() {
var message = "Hello, Java 10";
assertTrue(message instance of String);
}
로컬 변수 타입 추론은 지역 변수를 초기화하며 선언할 때만 사용할 수 있습니다.
var의 잘못된 예시
var n; // var는 초기화 없이 사용할 수 없습니다.
var emptyList = null; // 변수 초기화를 null로 할 수 없습니다.
var p = (String s) -> s.length() > 10; // 람다 표현식은 명확한 타입 추론을 하기 힘들기 때문에 사용할 수 없습니다.
var arr = {1, 2, 3}; // 배열 또한 명확한 타입을 작성해주어야 합니다.
수정이 불가능한 Collections
데이터를 추가하거나 제거할 수 없는 고정된 Collection을 반환하는 메소드들이 추가되었습니다.
copyOf()
@Test(expected = UnsupportedOperationException.class)
public void whenModifyCopyOfList_thenThrowsException() {
List<Integer> copyList = List.copyOf(someIntList);
copyList.add(4);
}
toUnmodifiable*()
@Test(expected = UnsupportedOperationException.class)
public void whenModifyToUnmodifiableList_thenThrowsException() {
List<Integer> evenList = someIntList.stream()
.filter(i -> i % 2 == 0)
.collect(Collectors.toUnmodifiableList());
evenList.add(4);
}
Optional*.orElseThrow()
만약 현재 값이 존재하지 않는다면 예외를 발생시켜주는 메소드가 추가되었습니다.
@Test
public void whenListContainsInteger_OrElseThrowReturnsInteger() {
Integer firstEven = someIntList.stream()
.filter(i -> i % 2 == 0)
.findFirst()
.orElseThrow();
is(firstEven).equals(Integer.valueOf(2));
}
성능 개선
Parallel Full GC for G1
G1 GC는 Java 9 버전부터 default GC였습니다. 하지만 G1에 대한 Full GC는 싱글 스레드 기반으로 동작하고 있었습니다. Java 10에서는 Parallel Full GC를 통해 Full GC가 일어나는 동안 동작 중지 시간을 효과적으로 줄일 수 있게 되었습니다.
728x90