0

チェックスタイルは、プライベートクラス変数の場合は「finalとして宣言する必要がある」と述べています。

class Test {
    private int x=1;

    public void set(int x) {
        this.x = x;
    }
}

上記の場合、xをfinalとして宣言するように呼び出しますが、xをfinalとして宣言すると、コンストラクターでの初期化でエラーが発生します。キャッチは何ですか?

4

3 に答える 3

0

ただし、x を final として宣言すると、コンストラクターでの初期化時にエラーが発生します。

静的フィールドを初期化するには、静的ブロックを使用します。

そして、なぜそうあるべきかfinal...その理由は

  1. あり、外部からアクセスすることはprivate staticできません。
  2. 必要がない場合はfinal、作成する必要はありませんstatic

したがって、削除するかstatic使用しますfinal private static

さて、コードの他の部分:

public void set(int x) {
    this.x = x;
}

問題:

  1. staticを使用してフィールドにアクセスしないでくださいthis
  2. 静的ブロックを使用して静的フィールドを初期化します。
于 2013-03-05T07:48:24.097 に答える
0

static final フィールドの値は変更できません。

x を静的にする必要がある場合は、メソッドを次のように変更します。

public static void setX(int newX){
    [...]

静的メソッドでは「this」を使用できないことに注意してください。

これで問題が解決するはずです。

于 2013-03-05T07:48:53.133 に答える
0

セッターを介して変更するためprivateにフィールドにアクセスできるようにするのは悪いスタイルです。static次のいずれかを行う必要があります。

1)フィールドを作成し、そのメソッドをx final削除します。set

また

2) フィールドをx非静的にする (staticキーワードを削除する) と、それを作成する必要がなくなりますfinal

于 2013-03-05T07:46:45.967 に答える