10

public static finalJava インターフェイスでインスタンス変数の宣言を使用するのはなぜですか?
すべての変数は暗黙的public static finalに Java インターフェースにあります。インターフェイス内で宣言されていますが、定数変数で
使用するのは良いコーディング方法ですか。public static final

例えば ​​:

public interface TestInterface{

public static final String EX_CONSTANT = "ABC";
public static final int EX_INT_CONSTANT = 5;
public static final double EX_DOUBLE = 5.0;
public static final Integer EX_INTEGER = 10;

}
4

7 に答える 7

11

クラスとインターフェースの両方で統一された構文を使用すると、リファクタリングが簡素化されます。

将来、あなたのフィールドを に変えたり、これらのフィールドをクラスに移動したいと思うかもしれません。そうでない場合に定義されたいくつかのフィールドを見落とすと、意味上の違いが得られますinterface(もちろん、リファクタリングのためのツールはありますが)。classpublic static final

Java 6 で導入されたインターフェースで宣言されたメソッドの実装に対するアノテーションのサポートと同じだと思います。@Overriden現在の形式では冗長ですが、リファクタリングの場合に役立つ可能性があります。

于 2012-09-20T18:49:43.763 に答える
5

私はそうは思わない。すべてのインターフェイス変数は暗黙的に public static final であるため、それらを同じにマークする意味はありません。

于 2012-09-20T18:45:33.687 に答える
3

IMO, Interface is a contract. Once variables are declared or defined they are not going to change. That's why generally we make them public static final.

Readability is another factor which makes declaration redundant.

于 2012-09-20T18:44:28.813 に答える
2

プログラマーのチームで作業している場合、デフォルトでは変数がインターフェイスでpublic static finalであるという事実を知らないジュニア プログラマーを見つけるでしょう。変数がそのように宣言されているのを見ると、インターフェイスとその変数の使用。

于 2012-09-20T19:07:41.087 に答える
2

確かに、それは冗長です。public static final通常、人々は暗黙のうちにそれを宣言していることを知らないだけです。次のような宣言も同様です。

public abstract interface Test { // Interfaces are always abstract
    public void testMethod(); // Interface methods are always public
    abstract void anotherTestMethod(); // Also redundant
}

通常、それは、何らかの方法で宣言する必要がないことを人々が知らないという事実に要約されますdefaultケースインswitchが必要である、またはコンパイルできないと考えている人 (経験豊富なプログラマー) と話をしたことがあります。

そうは言っても、それらを追加するための唯一の議論は、それらの実際の可視性と実際に何が何であるかを明確にすることです. それは読みやすさと明確化の問題であり、それらを含めるかどうかは、実際の動作に関しては無関係です。

于 2012-09-20T18:45:52.523 に答える
1

あなたは正しいです:それは冗長です。冗長な構文を追加するのは好きではありません。ただし、この慣行には支持者がいます。また、return 式の周りに括弧を追加することを好む人もいます。これは、'if' ステートメントのような誤った理由からです。3年生が理解できる算術式を「明確にする」ための余分な括弧。それはすべて、人生の豊かなタペストリーの一部です。

于 2012-09-20T23:31:49.230 に答える