728x90
반응형
Java17에서 추가된 문법 및 함수를 정리해보자
Sealed Classes (봉인 클래스)
Sealed 클래스는 다른 클래스들이 상속을 제한하여 해당 클래스의 하위 클래스로 사용될 수 있는 제한된 집합을 정의
public sealed class Shape permits Circle, Rectangle {
// 클래스 정의
}
final class Circle extends Shape {
// 클래스 정의
}
non-sealed class Rectangle extends Shape {
// 클래스 정의
}
Pattern Matching for switch (스위치 패턴 매칭)
스위치 문에서 패턴 매칭을 사용하여 다양한 조건을 처리할 수 있음
int dayOfWeek = 3;
String dayType = switch (dayOfWeek) {
case 1, 2, 3, 4, 5 -> "Weekday";
case 6, 7 -> "Weekend";
default -> "Invalid day";
};
Records (레코드)
레코드는 불변성과 데이터 저장을 위한 간단한 클래스를 제공
public record Person(String name, int age) {
// 생성자, getter, equals(), hashCode(), toString() 등 자동 생성
}
Local Variable Type Inference (지역 변수 타입 추론)
var 키워드를 사용하여 지역 변수의 타입을 추론할 수 있음
var name = "John Doe";
var numbers = List.of(1, 2, 3, 4, 5);
Enhanced Pseudo-Random Number Generators (향상된 유사 난수 생성기)
java.util.Random 클래스에 새로운 유사 난수 생성기 알고리즘이 추가
Random random = new Random();
int randomNumber = random.nextInt(100);
String::stripIndent() 함수
문자열의 여백을 자동으로 제거
String text = """
Hello,
This is a multi-line
string with indentation.
""";
String strippedText = text.stripIndent();
String::translateEscapes() 함수
문자열에서 이스케이프 시퀀스를 해석하여 해당 문자로 변환
String escapedText = "Hello\\nWorld";
String translatedText = escapedText.translateEscapes();
Files::mismatch() 함수
두 파일의 차이점을 비교하여 첫 번째 다른 위치의 오프셋을 반환
Path file1 = Path.of("file1.txt");
Path file2 = Path.of("file2.txt");
long mismatchOffset = Files.mismatch(file1, file2);
Arrays::compare() 함수
두 배열을 비교하여 순서대로 비교된 요소의 차이를 반환
int[] arr1 = {1, 2, 3};
int[] arr2 = {1, 2, 4};
int difference = Arrays.compare(arr1, arr2);
Stream::iterate() 함수
초기 값과 UnaryOperator를 사용하여 무한 스트림을 생성
Stream<Integer> stream = Stream.iterate(0, n -> n + 2);
stream.limit(10).forEach(System.out::println);
반응형
'프로그래밍 > JAVA' 카테고리의 다른 글
[Java] 3. Optional 값 가져오기 (0) | 2023.07.19 |
---|---|
[Java] 1. Optional / 2. Optional 객체 생성 (0) | 2023.07.18 |
[Java] Math.ceil() 결과가 잘못 나오는 경우 (0) | 2023.06.22 |
[Java] JDK와 JRE의 차이점 (0) | 2023.06.07 |
[Java] @NoArgsConstructor @AllArgsConstructor 비교 (0) | 2023.06.01 |