>  기사  >  Java  >  Java로 레코드를 설정하는 설정자

Java로 레코드를 설정하는 설정자

Barbara Streisand
Barbara Streisand원래의
2024-10-22 06:07:31152검색

Setters en un Record en Java

레코드는 불변성을 특징으로 하는 구조입니다. 즉, 레코드 유형의 객체가 생성되면 속성은 수정할 수 없으며 다른 프로그래밍 언어에서 데이터 클래스 또는 DTO(Data Transfer Object)라고 부르는 것과 동일합니다. 그러나 setter 메소드를 사용하여 속성을 수정해야 하고 레코드 내의 각 속성이 최종 유형이라는 점을 고려하면 어떻게 이를 달성할 수 있습니까?

이것이 가능한지 보여주기 위해 이름과 가격이라는 두 가지 속성이 있는 Product 레코드와 Java에서 레코드를 정의할 때 자동으로 생성되는 각 메서드를 만들어 보겠습니다.

이제 Product 유형의 객체를 생성하고 name 속성을 수정하려고 하면 이것이 불가능하고 이를 수행하는 setter 메소드도 없다는 것을 알 수 있습니다.

그러나 레코드에 추가 메소드가 있을 수 있다는 것을 알고 있다면 name 속성을 수정하고 새 값을 할당하는 setName(String name) 메소드를 생성할 수 있습니다. 왜냐하면 대답은 '아니요'이기 때문입니다. . , 일반 수업처럼 작동하지 않습니다. 예:

그렇다면 Java에서 레코드의 속성을 어떻게 수정할 수 있을까요? 대답은 set 메소드가 각 속성과 분명히 수정된 속성을 사용하여 record의 새 인스턴스를 반환하는 경우 가능하다는 것입니다. 이 과정은 기록이 갖고 있는 속성의 수에 따라 다소 지루할 수 있습니다.

이런 방식으로 setter 메소드를 호출하면 수정된 속성을 가진 Product 유형의 새 인스턴스가 획득됩니다. 예를 들면 다음과 같습니다.

각 객체 p, q, r에 대해 get, equals, hashCode 및 toString 메소드를 정상적으로 호출할 수 있으며, 각 객체의 속성 값이 다르기 때문에 객체 중 어느 것도 서로 동일하지 않다는 점을 고려하면 됩니다.

이 시점에서는 기록이 정보를 간단한 형태로 저장하고 전송할 수 있는 구조로 설계되었다는 점을 고려하여 이 접근 방식이 해결 중인 문제에 적합한지 여부를 고려하는 것이 중요합니다. 애플리케이션 내에서 방식을 사용하고 변경할 수 없거나 더 큰 유연성을 갖춘 구조가 필요한 경우 클래스를 사용해야 합니다. 레코드수업을 언제 사용하는지에 대한 자세한 내용은 다음 게시물을 참고하세요.

위 내용은 Java로 레코드를 설정하는 설정자의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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