最终静态和静态最终的区别

我找到了一个代码,它声明代码类似于

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

108863 次浏览

他们是一样的,

private final static String API_RTN_ERROR = "1";


private static final String API_RTN_ERROR= "1";

没有任何区别。根据 8.3.1-类-Java 语言规格的字段修饰符 ,

如果在一个字段声明中出现两个或两个以上(不同的)字段修饰符,则通常(尽管不是必需的)它们按照与上面的 FieldModfier 产品中所示顺序一致的顺序出现。

对于字段,上述产品按以下顺序列出了修饰符:

@Annotation public protected private static final transient volatile

至于方法:

@Annotation public protected private abstract static final synchronized native strictfp

他们是一样的。修饰语的顺序不重要。请注意,同样的规则也适用于在 Java 中使用修饰符的 所有上下文。

但是,大多数 Java 样式指南都建议/强制修饰符使用相同的特定顺序。

他们之间有什么区别,或者他们是一样的?

如果你说的是静态和终态的变化顺序,那么是的,它们是一样的。

私人的和公共的有什么不同?

不,你可以在私下和公共场合使用任何命令。只是私有变量不能直接在类之外访问。

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 static final <Type> <variable_name> = <value>;

逻辑上没有区别,技术上也没有影响。

唯一的问题是如果你按照这个顺序使用的话,Sonarqube 会报告代码嗅觉

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. 严格遵守

注意,遵循此约定不会产生技术影响,但会降低代码的可读性,因为大多数开发人员习惯于标准顺序。