変更可能なJavaと不変のJava

変更可能と不変

変更可能なオブジェクトと変更可能なオブジェクトの違いJava

変更可能なオブジェクトには変更可能なフィールドがあり、変更可能なオブジェク 不変オブジェクトは、作成後に状態を変更できないオブジェクトです。 MutableとImmutableは、javaのオブジェクトの2つのカテゴリです。 この記事では、javaの可変オブジェクトと不変オブジェクトの違いを見ていきます。 また、javaの可変クラスと不変クラスの違いを示すjavaコード例も見ていきます。

変更可能なJavaと不変のJavaの間の頭の比較(Infographics)

以下は、変更可能なJavaと不変のJavaの間のトップ6の違いです:

フリーソフトウェア開発コース

Web開発、プログラミング言語、ソフトウェアテスト&その他

変更可能な情報と不変の情報

変更可能と不変の情報

変更可能と不変のJavaの主な違い

以下は、javaの変更可能と不変のオブジェクトの主な違いです:

  • 変更可能なオブジェクトは、新しいオブジェクトを作成せずにオブジェクトの状態を変更できるオブジェクトです。 それは、変更可能なオブジェクトは、その作成後に変更することができますです。 不変オブジェクトの場合、オブジェクトの状態が変更されるたびに新しいオブジェクトが取得されます。 不変オブジェクトを扱っている間、オブジェクトの作成後にオブジェクトの状態を変更することはできません。
  • 可変オブジェクトは、一般的なケースでは、オブジェクトの内容を変更できるメソッドを提供しますが、不変オブジェクトはその内容を変更するメソ
  • 変更可能なjavaクラスでは、getterメソッドとsetterメソッドが存在しますが、不変クラスではgetterメソッドのみが使用でき、setterメソッドは使用できません。
  • 変更可能なクラスはスレッドセーフである場合としない場合がありますが、不変クラスはデフォルトでスレッドセーフです。
  • javaでの可変クラスの例はjavaです。ユーティルDate、StringBuffer、StringBuilderなどのjavaレガシークラス、ラッパークラス、Stringクラスは、javaの不変クラスの例です。

変更可能なJavaと不変のJavaの比較表

変更可能なJavaと不変のJavaの比較について説明しましょう:

変更可能

不変

Java可変オブジェクトは、その作成後に変更することができます。 Java不変オブジェクトは、作成後に変更することはできません。
既存のオブジェクトに変更が加えられても、新しいオブジェクトは形成されません。 既存のオブジェクトが変更されるたびに、新しいオブジェクトが形成されます。
オブジェクトの内容を変更するメソッドを提供します。 オブジェクトの内容を変更するためのメソッドを提供しません。
getterメソッドとsetterメソッドは、変更可能なクラスに存在します。 getterメソッドのみが存在し、setterメソッドは存在しません。
変更可能なクラスは、スレッドセーフである場合としない場合があります。 不変クラスは、デフォルトでスレッドセーフです。
javaでの変更可能なクラスの一般的な例には、StringBuffer、StringBuilder、およびjavaがあります。ユーティル日付。 すべてのレガシークラス、ラッパークラス、文字列クラスは、javaの不変クラスの一般的な例です。

変更可能と不変のJavaの例

変更可能と不変のJavaの例を以下に示します。

例1–Javaの変更可能なクラス

ここで、javaでの変更可能と不変のクラスの作成を示すjavaコード例が表示されます。

コード:

package com.edubca.mutabledemo;
public class MutableDemo {
private String studentName;
private int rollNumber;
MutableDemo (String studentName, int rollNumber) {
this.studentName = studentName;
this.rollNumber = rollNumber;
}
public String getStudentName() {
return studentName;
}
// this setter can modify the name
public void setStudentName(String studentName) {
this.studentName = studentName;
}
public int getRollNumber() {
return rollNumber;
}
// this setter can modify roll number
public void setRollNumber(int rollNumber) {
this.rollNumber = rollNumber;
}
public static void main(String args) {
MutableDemo obj = new MutableDemo ("John" , 100);
System.out.println("Original Name is " + obj.getStudentName());
System.out.println("Original Roll Number is " + obj.getRollNumber());
// update the name, and roll number as is mutable
obj.setStudentName("James");
obj.setRollNumber(102);
System.out.println("Modified Name is " + obj.getStudentName());
System.out.println("Modified Roll Number is " + obj.getRollNumber());
}
}

出力:

変更可能なJavaと不変のJava-1.1

変更可能と不変のJava-1。1

上記のコードは、getterとsetterを使用してjavaで変更可能なクラスを作成することを示しています。

例2–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());
}
}

出力:

変更可能なJavaと不変のJava-1.2

変更可能なJavaと不変のJava-1.2

上記のコードは、java不変クラスの作成を示しています。 不変クラスを作成する際には、次の点に留意する必要があります:

  • 不変クラスは継承されるべきではないため、finalでなければなりません。
  • 不変クラスのすべてのフィールドはfinalにする必要があります。
  • 変更可能なオブジェクトが不変クラスのフィールドとして使用される場合、その内容が変更されないように特別な処理を実装する必要があります。
  • パブリックコンストラクタが存在する必要があります。
  • すべての変数のGetterメソッドを定義する必要があります。
  • Setterメソッドは、どの変数にも存在してはなりません。

結論

上記の議論から、javaでのmutableとimmutableの違いを明確に理解しています。 また、変更可能なクラスと不変のクラスがどのように作成されるかを示すjavaの例も見てきました。 不変クラスはデフォルトでスレッドセーフであるのに対し、可変クラスはスレッドセーフである場合としない場合があることに注意することが重要

推奨記事

これは、変更可能なJavaと不変のJavaのガイドです。 ここでは、infographicsと比較表との変更可能なJavaと不変のJavaの主な違いについても説明します。 また、詳細については、次の記事をご覧ください–

  1. Java bufferedreader
  2. JavaのStringBufferクラス
  3. Java RuntimeException
  4. Java newInstance()
0 株

コメントを残す

メールアドレスが公開されることはありません。