簡體   English   中英

final static 和 static final 的區別

[英]Difference between final static and static final

我找到了一個代碼,它聲明了這樣的代碼

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不同?

完全沒有區別。 根據8.3.1 - 類 - Java 語言規范的字段修飾符

如果兩個或更多(不同的)字段修飾符出現在字段聲明中,雖然不是必需的,但通常它們的出現順序與上面在 FieldModifier 的產生式中顯示的順序一致。

對於字段,上述產生式按以下順序列出修飾符:

@Annotation public protected private static final transient volatile

對於方法:

@Annotation public protected private abstract static final synchronized native strictfp

他們是一樣的。 修飾符的順序並不重要。 請注意,相同的規則適用於 Java 中使用修飾符的所有上下文。

但是,大多數 Java 風格指南都建議/強制要求修飾符采用相同的特定順序。 在這種情況下,它是public static final

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";

即使以上都相同,前三個的位置是可以互換的。

他們是一樣的,

private final static String API_RTN_ERROR = "1";

private static final String API_RTN_ERROR= "1";

邏輯上沒有區別,也沒有技術影響。

唯一的問題是,如果您按此順序使用,sonarqube 會報告 Code Smell

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

因此建議使用:

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

Java 語言規范建議按以下順序列出修飾符:

  1. 注釋
  2. 民眾
  3. 受保護
  4. 私人的
  5. 抽象的
  6. 靜態的
  7. 最后
  8. 短暫的
  9. 易揮發的
  10. 同步的
  11. 本國的
  12. 嚴格的fp

請注意,遵循此約定沒有技術影響,但會降低代碼的可讀性,因為大多數開發人員都習慣於標准順序。

它們之間有什么區別或相同?

如果您正在談論更改 static 和 final 的順序,那么是的,它們是相同的。

私人或公共有什么不同?

不,您可以在私人和公共場合使用任何訂單。 唯一的區別是私有變量不能直接在類外訪問。

這只是人們為了保持編碼風格一致而遵循的約定或慣例。 它提高了可讀性。 所以寫這個的首選方式是

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

當然是一樣的。 這僅取決於您的習慣和偏好:-)。 我也對成員和方法使用 public static final order

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM