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);

 

반응형
복사했습니다!