[英]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";
它們之間有什么區別或相同? 還是private
或public
不同?
完全沒有區別。 根據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 語言規范建議按以下順序列出修飾符:
請注意,遵循此約定沒有技術影響,但會降低代碼的可讀性,因為大多數開發人員都習慣於標准順序。
它們之間有什么區別或相同?
如果您正在談論更改 static 和 final 的順序,那么是的,它們是相同的。
私人或公共有什么不同?
不,您可以在私人和公共場合使用任何訂單。 唯一的區別是私有變量不能直接在類外訪問。
這只是人們為了保持編碼風格一致而遵循的約定或慣例。 它提高了可讀性。 所以寫這個的首選方式是
private static final <Type> <variable_name> = <value>;
當然是一樣的。 這僅取決於您的習慣和偏好:-)。 我也對成員和方法使用 public static final order
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.