이번 글에서는 Java의 Immutable 클래스에 대해 설명하겠습니다. 또한 불변 클래스의 용도를 살펴보겠습니다. Java에서 불변 클래스를 생성하는 방법을 보여주는 Java 코드 예제가 있습니다. 불변 클래스는 내용을 변경할 수 없는 클래스입니다.
다음은 불변 클래스와 관련된 몇 가지 중요한 사항입니다.
무료 소프트웨어 개발 과정 시작
웹 개발, 프로그래밍 언어, 소프트웨어 테스팅 등
이 클래스를 사용하기 전에 불변 클래스가 어떻게 생성되는지 아는 것이 중요합니다. 다음은 클래스를 생성하는 동안 명심해야 할 중요한 사항입니다:
다음은 Java에서 불변 클래스의 주요 용도입니다.
나열된 장점 외에도 불변 클래스를 사용할 때 몇 가지 성능 문제가 있을 수 있습니다. 따라서 스레드 안전성 및 기타 기능이 중요하지 않은 경우 성능 향상을 위해 가변 클래스 사용을 고려할 수 있습니다.
다음은 언급된 예시입니다.
이제 Java에서 불변 클래스 생성을 보여주는 Java 코드 예제를 살펴보겠습니다. 다음은 Java에서 불변 클래스가 생성되는 방법을 보여주는 Java 코드 예제입니다.
코드:
package com.edubca.immutabledemo; public final class ImmutableDemo { final String studentName; final int rollNumber; public ImmutableDemo (String studentName, int rollNumber) { this.studentName = studentName; this.rollNumber = rollNumber; } public String getStudentName() { return studentName; } public int getRollNumber() { return rollNumber; } public static void main(String[] args) { ImmutableDemo obj = new ImmutableDemo ("John" , 100); // Since no getters are available contents cannot be modified. // Also as variables are declared final they cannot be modified System.out.println("Name is " + obj.getStudentName()); System.out.println("Roll Number is " + obj.getRollNumber()); } }
출력:
위 코드는 클래스 멤버로서 변경 가능한 객체를 포함하지 않는 변경 불가능한 클래스를 생성하는 방법을 보여줍니다.
이제 가변 객체를 멤버로 갖는 불변 클래스를 생성하는 방법을 살펴보겠습니다. 이 경우 불변성을 유지하려면 특별한 처리가 필요합니다.
불변 클래스의 변경 가능 객체 문제:
다음은 변경 가능한 멤버가 있는 변경 불가능한 클래스 생성을 보여주는 일반적인 코드 예제입니다.
코드:
package com.edubca.immutabledemo; import java.util.Date; import java.text.SimpleDateFormat; public final class ImmutableDemo { final String studentName; final int rollNumber; final Date birthDate; public ImmutableDemo (String studentName, int rollNumber, Date birthDate) { this.studentName = studentName; this.rollNumber = rollNumber; this.birthDate=birthDate; } public String getStudentName() { return studentName; } public int getRollNumber() { return rollNumber; } public Date getBirthDate() { return birthDate; } public static void main(String[] args) throws Exception { String birthDate= "31/09/1997"; ImmutableDemo obj = new ImmutableDemo ("John" , 100, new SimpleDateFormat("dd/MM/yyyy").parse(birthDate)); System.out.println("Name is " + obj.getStudentName()); System.out.println("Roll Number is " + obj.getRollNumber()); System.out.println("Birth date is " + obj.getBirthDate()); obj.getBirthDate().setTime(1000); System.out.println("After changing birth date>>>>>>>>>>>>"); System.out.println("Name is " + obj.getStudentName()); System.out.println("Roll Number is " + obj.getRollNumber()); System.out.println("Birth date is " + obj.getBirthDate()); } }
출력:
위 출력에서 생년월일이 변경되면서 객체의 내용이 변경된 것을 확인할 수 있습니다. 이는 불변 클래스의 규칙을 위반하는 것입니다.
불변 클래스의 가변 객체 문제에 대한 해결책:
이러한 경우를 처리하려면 코드에 일부 변경 사항을 구현해야 합니다. 수정된 코드에서는 get 메소드에서 변경 가능한 객체를 반환할 때 원래 객체를 반환하지 않습니다. 오히려 객체의 복제본을 반환합니다. 따라서 복제된 개체를 변경해도 원본 개체에는 아무런 영향을 미치지 않습니다. 수정된 코드는 다음과 같습니다.
코드:
package com.edubca.immutabledemo; import java.util.Date; import java.text.SimpleDateFormat; public final class ImmutableDemo { final String studentName; final int rollNumber; final Date birthDate; public ImmutableDemo (String studentName, int rollNumber, Date birthDate) { this.studentName = studentName; this.rollNumber = rollNumber; this.birthDate=birthDate; } public String getStudentName() { return studentName; } public int getRollNumber() { return rollNumber; } public Date getBirthDate() { return (Date)birthDate.clone(); } public static void main(String[] args) throws Exception { String birthDate= "31/09/1997"; ImmutableDemo obj = new ImmutableDemo ("John" , 100, new SimpleDateFormat("dd/MM/yyyy").parse(birthDate)); System.out.println("Name is " + obj.getStudentName()); System.out.println("Roll Number is " + obj.getRollNumber()); System.out.println("Birth date is " + obj.getBirthDate()); obj.getBirthDate().setTime(1000); System.out.println("After changing birth date>>>>>>>>>>>>"); System.out.println("Name is " + obj.getStudentName()); System.out.println("Roll Number is " + obj.getRollNumber()); System.out.println("Birth date is " + obj.getBirthDate()); } }
출력:
위 출력에서 날짜 값에 변화가 없음을 확인할 수 있습니다. 따라서 클래스의 불변성은 그대로 유지됩니다.
위의 논의를 통해 우리는 Java 불변 클래스에 대해 명확하게 이해했습니다. 또한, 그 장점도 확인했습니다.
위 내용은 Java의 불변 클래스의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!