Java
 Computer >> コンピューター >  >> プログラミング >> Java

Java 9のSet.of()メソッドで不変(イミュータブル)なSetを作成する方法

Java 9では、静的ファクトリメソッドSet.of()を使用することで、変更不可能(イミュータブル)なセットを簡潔に作成できます。従来のようにCollections.unmodifiableSet()でラップする必要がなく、1行のコードで安全なコレクションを生成できるのが大きな魅力です。

Set.of()メソッドで作成されたセットのインスタンスには、以下のような特徴があります。

  • ファクトリメソッドが返すセットは慣例としてイミュータブル(不変)です。つまり、要素の追加削除置換は一切できません。セットに対してミューテーター(変更)メソッドを呼び出すと、UnsupportedOperationExceptionがスローされます。
  • セットに格納された要素自体がミュータブル(可変)である場合、セットの内容が変化したように見えることがあります。
  • イミュータブルなセットは、null要素を許容しない静的ファクトリメソッドによって作成されます。null要素を含めて作成しようとすると、NullPointerExceptionがスローされます。
  • イミュータブルなセットの作成時には重複要素が拒否されます。静的ファクトリメソッドに重複する要素を渡すと、IllegalArgumentExceptionがスローされます。
  • セット要素の反復順序は未指定であり、将来のバージョンで変更される可能性があります。

構文

Set.of(E... elements)

使用例

import java.util.Set;
public class SetOfMethodTest {
    public static void main(String args[]) {
        Set<String> names = Set.of("Adithya", "Bhavish", "Chaitanya", "Jai");
        System.out.println("Names - " + names);
        names.add("Raja");      // UnsupportedOperationException がスローされる
    }
}

実行結果

Names - [Bhavish, Adithya, Jai, Chaitanya]
Exception in thread "main" java.lang.UnsupportedOperationException
    at java.base/java.util.ImmutableCollections.uoe(Unknown Source)
    at java.base/java.util.ImmutableCollections$AbstractImmutableSet.add(Unknown Source)
    at SetOfMethodTest.main(SetOfMethodTest.java:8)

このように、Set.of()で作成したセットに対してadd()などの変更操作を行おうとすると、コンパイルは通っても実行時にUnsupportedOperationExceptionが発生します。読み取り専用のコレクションが必要な場面では、このメソッドを活用することで、意図しない変更からデータを保護し、より堅牢なコードを実現できます。

  1. JavaのJToggleButton実装ガイド:ON/OFF切替ボタンの作り方を解説

    JToggleButtonとは JToggleButtonはAbstractButtonを拡張したクラスで、クリックするたびにONとOFFが切り替わるトグルボタンを実現するために使用されます。通常のボタンと異なり、押した状態を保持できるのが特徴です。 JToggleButtonの主な特徴 最初に押されたときは押し込まれた状態のままとなり、もう一度押してはじめて元の状態(押されていない状態)に戻ります。 ボタンが押されるたびにActionEventが発生します。 さらに、JToggleButtonはItemEventも発生させることができます。このイベントは、選択状態という概念を持つコンポー

  2. Javaでログインフォームを作成する方法!Swingを使った実装例とサンプルコード

    JavaではSwingというGUIツールキットを利用することで、デスクトップアプリケーション向けのログインフォームを簡単に開発できます。この記事では、ユーザー名(User Name)とパスワード(Password)の2つのラベル、認証情報を入力するための2つのテキストフィールド、そしてSUBMIT(送信)ボタンを1つ備えたフォームを作成します。正しい認証情報が入力されると、フォーム上に「Hello admin」というメッセージが表示されます。 使用する主なコンポーネント JLabel:ラベルの表示に使用します。 JTextField:ユーザー名の入力欄です。 JPasswordField: