final staticとstatic finalの違い


151

次のようなコードを宣言したコードを見つけました

private final static String API_RTN_SUCCESS = "0";
private final static String API_RTN_ERROR = "1";

public static final String SHARED_PREFERENCE_CONFIG = "shared_preference_config";
public static final String STARTUP_SETTING_KEY = "startup_setting";

それらの違いは何ですか?それらは同じですか?またはそれはのために異なりますprivatepublic


149
それらが異なる場合は、Javaを完全に諦めます。
Alex Lockwood 2012年

回答:


226

全然違いません。8.3.1-クラス-Java言語仕様のフィールド修飾子によると 、

フィールド宣言に2つ以上の(個別の)フィールド修飾子が含まれる場合、必須ではありませんが、慣習的に、FieldModifierの生成で上に示したものと同じ順序で表示されます。

フィールドの場合、上記のプロダクションは修飾子を次の順序でリストします。

@Annotation public protected private static final transient volatile

そしてメソッドについて:

@Annotation public protected private abstract static final synchronized native strictfp


9
参考までに、リンクからの順序はabstract static finalです。
sfarbota 14

42

彼らは同じです。修飾子の順序は重要ではありません。また、Javaで修飾子が使用されるすべてのコンテキストに同じルールが適用されることに注意してください。

ただし、ほとんどのJavaスタイルガイドでは、修飾子について同じ特定の順序を推奨/義務付けています。この場合はpublic static finalです。


19
private static final String API_RTN_ERROR= "1";
private final static String API_RTN_ERROR= "1";
static private final String API_RTN_ERROR= "1";
static final private String API_RTN_ERROR= "1";
final static private String API_RTN_ERROR= "1";
final private static String API_RTN_ERROR= "1";

上記のすべてが同じでも、最初の3つの位置は相互に移動できます。


8

彼らは同じです

private final static String API_RTN_ERROR = "1";

private static final String API_RTN_ERROR= "1";

4

それらの違いは何ですか?それらは同じですか?

staticとfinalの順序の変更について話している場合は、はい、それらは同じです。

プライベートとパブリックで違いはありますか?

いいえ、プライベートでもパブリックでも、どのような順序でも使用できます。違いは、プライベート変数はクラスの外部から直接アクセスできないことです。


1

これは、コーディングスタイルの一貫性を保つために人々が従う慣例または慣例にすぎません。読みやすさが向上します。これを書くのに好ましい方法は

private static final <Type> <variable_name> = <value>;

0

もちろん同じです。それはあなたの習慣と好みにのみ依存します:-)。メンバーとメソッドにもパブリック静的最終注文を使用します

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.