Javaで不変クラスを作成するにはどうすればよいですか?例を挙げて説明する

Patricia Arquette
リリース: 2024-10-08 22:07:31
オリジナル
330 人が閲覧しました

How to create a immutable class in java? explain with example

Java での不変クラスの作成

不変クラスとは、インスタンスの作成後に変更できないクラスです。これは、スレッドセーフなアプリケーションを作成し、データの整合性を確保するのに役立ちます。

不変クラスの主な特徴

  • すべてのフィールドは非公開で最終的なものです。
  • setter メソッドは提供されません。
  • フィールドの初期化はコンストラクターを通じて行われます。
  • 可変オブジェクトの防御コピーは、必要に応じて返されます。

不変クラスの例

    public final class ImmutablePoint {
        private final int x;
        private final int y;

        public ImmutablePoint(int x, int y) {
            this.x = x;
            this.y = y;
        }

        public int getX() {
            return x;
        }

        public int getY() {
            return y;
        }

        // Example of returning a new instance instead of modifying the current one
        public ImmutablePoint move(int deltaX, int deltaY) {
            return new ImmutablePoint(this.x + deltaX, this.y + deltaY);
        }
    }
ログイン後にコピー

使用例

    public class Main {
        public static void main(String[] args) {
            ImmutablePoint point1 = new ImmutablePoint(1, 2);
            System.out.println("Point1: (" + point1.getX() + ", " + point1.getY() + ")");

            // Moving the point creates a new instance
            ImmutablePoint point2 = point1.move(3, 4);
            System.out.println("Point2: (" + point2.getX() + ", " + point2.getY() + ")");
            System.out.println("Point1 remains unchanged: (" + point1.getX() + ", " + point1.getY() + ")");
        }
    }
ログイン後にコピー

結論

Java で不変クラスを作成するには、final フィールドを持ち、セッター メソッドを持たないクラスを定義する必要があります。これにより、オブジェクトが作成されると、その状態は変更できなくなります。不変クラスを使用すると、特に同時プログラミングのシナリオにおいて、より安全で予測可能なコードが得られます。

以上がJavaで不変クラスを作成するにはどうすればよいですか?例を挙げて説明するの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:dev.to
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!