[英]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.