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

一度だけ設定できるがJavaではfinalではない変数を作成するにはどうすればよいですか?


最終変数を初期化すると、その値をそれ以上変更することはできません。つまり、最終変数に値を割り当てることができるのは1回だけです。最終変数に値を割り当てようとすると、コンパイル時エラーが生成されます。

public class FinalExample {
   final int j = 100;
   public static void main(String args[]){
      FinalExample obj = new FinalExample();
      obj.j = 500;
      System.out.println(obj.j);
   }
}

コンパイル時エラー

FinalExample.java:6: error: cannot assign a value to final variable j
   obj.j = 500;
      ^
1 error

「最終的な」機能の実現

最終的なキーワードを実際に使用せずに最終的な機能を実現するには-

変数をプライベートにし、setterメソッドを使用して値を設定します。これにより、2回目に呼び出そうとした場合に、前の値を設定するか、例外をスローする必要があります。

public class FinalExample {
   private Integer num;
   public void setNum(int num){
      this.num = this.num == null ? num : this.num;
   }
   private String data;
   public void setData(String data) {
      this.data = this.data == null ? data : demo();
   }
   public String demo() {
      String msg = "You cannot set value to the variable data for the second time";
      throw new RuntimeException(msg);
   }
   public static void main(String args[]){
      FinalExample obj = new FinalExample();
      obj.setNum(200);
      System.out.println(obj.num);
      obj.setNum(500);
      System.out.println(obj.num);
      obj.setData("hello");
      obj.setData("sample data");
   }
}

出力

200
200
Exception in thread "main" java.lang.RuntimeException: You cannot set value to the variable data for the second time
at SEPTEMBER.remaining.FinalExample.demo(FinalExample.java:15)
at SEPTEMBER.remaining.FinalExample.setData(FinalExample.java:12)
at SEPTEMBER.remaining.FinalExample.main(FinalExample.java:26)

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

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

  2. Javaでログインフォームを作成するにはどうすればよいですか?

    Javaを使用してJavaでログインフォームを開発できます スイング テクノロジー。この例では、2つのラベルユーザー名を作成できます。 およびパスワード 、ユーザーが入力する2つのテキストフィールド有効 クレデンシャル 最後に1つの送信ボタン。ユーザーが2つのテキストフィールドに有効なクレデンシャルを入力できるようになると、こんにちはが表示されます。 管理者 ログインフォームで。 例 import java.awt.*; import java.awt.event.*; import javax.swing.*; public class LoginDemo extends JFrame im