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

Javaでシングルトン列挙型を作成するにはどうすればよいですか?


シングルトン patternは、クラスのインスタンス化を1つのオブジェクトに制限します。 インスタンス public static final field これは列挙型を表します 実例。 EnumSingleton.INSTANCEを使用してクラスのインスタンスを取得できます ただし、実装を変更したい場合に備えて、ゲッターにカプセル化することをお勧めします。

Javaで列挙型をシングルトンとして使用できる理由はいくつかあります

  • 1つのインスタンスを保証しました(リフレクションを使用しても、複数の列挙型をインスタンス化することはできません)。
  • スレッドセーフ。
  • シリアル化。

構文

public enum Singleton {
   INSTANCE;
   private singleton() {
   }
}

public enum EnumSingleton {
   INSTANCE;
   private String name;
   private int age;
   private void build(SingletonBuilder builder) {
      this.name = builder.name;
      this.age = builder.age;
   }
   public static EnumSingleton getSingleton() { // static getter
      return INSTANCE;
   }
   public void print() {
      System.out.println("Name: "+name + ", age: "+age);
   }
   public static class SingletonBuilder {
      private final String name;
      private int age;
      private SingletonBuilder() {
         name = null;
      }
      public SingletonBuilder(String name) {
         this.name = name;
      }
      public SingletonBuilder age(int age) {
         this.age = age;
         return this;
      }
      public void build() {
         EnumSingleton.INSTANCE.build(this);
      }
   }
   public static void main(String[] args) {
      new SingletonBuilder("Adithya").age(25).build();
      EnumSingleton.getSingleton().print();
   }
}

出力

Name: Adithya, age: 25

  1. QRコードの作り方

    おそらく以前にQRコードを見たことがあるでしょう。それらは正方形で、通常は黒で、角にいくつかの小さな正方形があり、波状の線や点がたくさん含まれているため、世界で何をすべきか疑問に思います。 QRコードとは何ですか? QRコードはクイックレスポンスの略です コード。店舗でバーコードをスキャンして価格情報を検索するのと同じように、QRコードをスキャンして、わかりにくいデザインの背後に隠されているものをすべて掘り下げることができます。 唯一の違いは、誰でも ビジネスだけでなく、QRコードを作成できます。 QRコードにできることはいくつかあります。 誰でもQRコードを作成でき、誰で

  2. JTextFieldがJavaで数値のみを受け入れるようにするにはどうすればよいですか?

    デフォルトでは、 JTextField 数字を許可できます 、文字 、および特別 キャラクター 。 JTextFieldに入力されたユーザー入力の検証 特に入力文字列をintなどの数値に変換する必要がある場合は、難しい場合があります。 次の例では、 JTextField 数値のみを入力できます 。 例 import java.awt.*; import java.awt.event.*; import javax.swing.*; public class JTextFieldValidation extends JFrame {    JTextField tf;