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


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

它们之间有什么区别或相同?还是与private或不同public


149
如果它们不同,那么我会完全放弃使用Java。
亚历克斯·洛克伍德

Answers:


226

完全没有区别。根据 Java语言规范的8.3.1-类-字段修饰符

如果两个或多个(不同的)字段修饰符出现在字段声明中,则按惯例(尽管不是必需的),它们的出现顺序与上面FieldModifier生产中所示的顺序一致。

对于字段,所述生产按以下顺序列出修饰符:

@Annotation public protected private static final transient volatile

对于方法:

@Annotation public protected private abstract static final synchronized native strictfp


9
供参考,链接的顺序为abstract static final
sfarbota 2014年

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

即使以上所有内容相同,前三个位置也是可以互换的。


8

他们是一样的

private final static String API_RTN_ERROR = "1";

private static final String API_RTN_ERROR= "1";

4

它们之间有什么区别或相同?

如果您正在谈论更改static和final的顺序,那么是的,它们是相同的。

私人还是公共有什么不同?

不,您可以在私人和公共场合使用任何订单。唯一的区别是私有变量将无法在类外部直接访问。



0

当然是一样的。它仅取决于您的习惯和偏好:-)。我也对成员和方法使用公共静态最终顺序

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.