>  기사  >  Java  >  Java SE 개발자 인증 준비를 위한 Java Records 시험 목표

Java SE 개발자 인증 준비를 위한 Java Records 시험 목표

Barbara Streisand
Barbara Streisand원래의
2024-09-29 06:17:02228검색

Java Records Exam Objective for Java SE Developer Certification Preparation

Java 레코드의 도입으로 개발자에게는 데이터 객체의 처리 및 생성을 단순화하는 새로운 데이터 구조가 제공되었습니다. 최근 레코드 패턴과 중첩 패턴이 추가되면서 레코드 처리가 더욱 효율적이고 역동적으로 되었습니다.

기본부터 검토해 보겠습니다. 레코드는 기본 제공 접근자 메서드를 사용하여 데이터를 투명하게 전달하는 역할을 하는 기존 클래스에 대한 가벼운 대안입니다. 주요 목적은 복잡한 동작을 구현하기보다는 데이터를 보관하는 것입니다.

그러나 Java 21에 레코드 패턴이 도입되면서 기존의 인스턴스 및 캐스트 관용어가 단순화되었습니다. 객체가 특정 레코드 클래스의 인스턴스인지 확인한 다음 해당 구성 요소를 사용하도록 캐스팅하는 대신 이제 레코드 패턴을 사용하여 두 단계를 결합할 수 있습니다. 예를 들어 다음과 같이 작성하는 대신:

if (obj instanceof String) {
    String name = (String)obj;
    ... use name ...
}
In Java 21, we can simply write:

if (obj instanceof String name) {
    ... use name ...
}

이렇게 하면 유형 패턴 String s가 obj 값과 일치하고 패턴 변수 s를 String으로 캐스팅된 obj 값으로 ​​초기화하는 데 사용되므로 코드가 더 간결해지고 오류가 덜 발생합니다.

또한 Java 21에서는 중첩 패턴을 도입하여 중첩 레코드와 같은 보다 복잡한 객체 그래프를 일치시키고 분해할 수 있습니다. 다음과 같은 선언이 있다고 가정해 보겠습니다.

Record BankAccount(String accountNumber, String accountHolder, double balance) {}
Record Transaction(String transactionId, double amount, String type, String timestamp) {}
Record BankStatement(List<Transaction> transactions, BankAccount account) {}

이제 중첩 레코드 패턴을 사용하여 다음과 같이 BankStatement 개체에서 총 거래 금액을 계산할 수 있습니다.

static double calculateTotalTransactions(BankStatement statement) {
    if (statement instanceof BankStatement(List<Transaction> transactions, BankAccount account)) {
        double total = 0;
        for (Transaction t : transactions) {
            total += t.amount;
        }
        return total;
    }
    return 0;
}

이 예에서 외부 패턴 BankStatement(거래 목록, BankAccount 계정)에는 BankStatement 레코드에서 계정 구성 요소를 추출하는 데 사용되는 중첩 패턴 BankAccount 계정이 포함되어 있습니다. 이를 통해 각 개별 하위 패턴 일치를 별도로 처리할 필요가 없으므로 더욱 간결하고 효율적인 코드가 가능해집니다.

기록 패턴의 또 다른 유용한 기능은 유형 추론입니다. 레코드 패턴이 형식 인수를 제공하지 않고 일반 레코드 클래스의 이름을 지정하면 컴파일러는 패턴이 사용될 때 자동으로 형식 인수를 유추합니다. 이는 다음 예와 같이 코드를 단순화합니다.

record MyBankAccount<L extends LimitFactor, M extends Money>(L limitFactor, M money){};

static void recordInference(MyBankAccount<MoneyLimit, Amount> bankaccount){
    switch(bankaccount){
        case MyBankAccount(var moneylimit, var amount) ->
            System.out.println("Messages: Inferred that account has balance " + amount + " with a limit of " + moneylimit);
        case MyBankAccount(var moneylimit, null)->
            System.out.println("Messages: Inferred that account has a balance of zero with a limit of " + moneylimit);
        ...
    }
}

이 기능은 중첩된 레코드 패턴에서도 지원되므로 코드가 더욱 간결해지고 가독성이 높아집니다.

마지막으로 레코드 패턴은 Java 21의 스위치 표현식 및 문과 완전히 통합됩니다. 그러나 스위치 문에서 레코드 패턴을 사용할 때 스위치 블록은 완전해야 한다는 점에 유의하는 것이 중요합니다. 이는 선택기 표현식의 가능한 모든 값이 스위치 블록에서 고려되어야 함을 의미합니다. 레코드 패턴의 경우 사용된 패턴 유형을 분석하여 이를 결정합니다. 예를 들어, 케이스 레이블 Case Bar b는 Bar 유형의 값 및 Bar의 가능한 모든 하위 유형과 일치합니다.

결론적으로 Java 21의 기록 패턴을 이해하고 숙달하는 것은 Java SE 21 개발자 인증을 준비하는 모든 사람에게 중요합니다. 이러한 새로운 기능을 사용하면 레코드 처리를 더욱 간소화하고 효율적으로 수행할 수 있어 Java 개발자에게 필수적인 기술이 됩니다.

위 내용은 Java SE 개발자 인증 준비를 위한 Java Records 시험 목표의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
이전 기사:패키지 액세스 예다음 기사:없음