【发布时间】:2011-02-19 09:37:30
【问题描述】:
我正在声明一个字段:
private static final String filename = "filename.txt";
首先,private static final 的顺序重要吗?如果没有,是否有标准的公认顺序或约定?
其次,我的应用程序中的filename 是固定的。这是最好的存储价值吗?
【问题讨论】:
-
根据 JLS 首选静态 final!
我正在声明一个字段:
private static final String filename = "filename.txt";
首先,private static final 的顺序重要吗?如果没有,是否有标准的公认顺序或约定?
其次,我的应用程序中的filename 是固定的。这是最好的存储价值吗?
【问题讨论】:
我在 Eclipse 中使用Checkstyle,如果声明的顺序与您指定的顺序不同,则会发出警告,并引用 Java 语言规范 (JLS)。例如,
private final static String filename = "filename.txt";
结果
'static' modifier out of order with the JLS suggestions.
他们有this page,其中列出了他们期望的顺序,尽管通过该页面上的链接到JLS,我看不到任何支持他们对建议顺序的断言。
话虽如此,他们建议的顺序似乎与我见过的大多数代码中的顺序相对应,所以它似乎是一个很好的约定。
【讨论】:
没有。但这是我通常看到使用的顺序。
这是一个合理的选择,但有些人更喜欢配置文件,Properties 或其他文件格式(例如 XML)。这样,您无需重新编译即可更改文件名。
【讨论】:
在 Java 中给常量(static final 值)一个全大写的名称是很常见的,所以我会这样写:
private static final String FILENAME = "filename.txt";
另见Code Conventions for the Java Programming Language。 (这些是大多数 Java 程序员使用的 Sun 的代码约定)。
【讨论】:
这些关键字的最常用顺序是private static final。您还可以使用 PSF 模式记住这些关键字的顺序:
P => 私有/公共/受保护
S => 静态/抽象/ ...
F = > 最终
【讨论】:
PSF 助记符是最好的!谢谢
顺序无关紧要,但您可以随时使用它 - 只有 6 种可能性可供测试。
我不知道任何约定,但我将可见性修饰符放在首位(公共/私有/受保护),这样您就可以看到它并排成一行。
如果它是固定的,那么你可以这样做,但我总是认为某些东西是一个常数,只有在以后(例如在测试期间)才发现我想要传递它。命令行上的参数或properties 文件适用于这种情况,并且设置起来非常简单。
【讨论】:
见:http://docs.oracle.com/javase/specs/jls/se5.0/html/classes.html#8.3.1
8.3.1 字段修饰符
字段修饰符:
字段修改器
字段修饰符字段修饰符
FieldModifier:其中之一
注释公共保护私有
静态最终瞬态易失
...
如果两个或多个(不同的)字段修饰符出现在字段声明中,习惯尽管不是必需的,但它们的出现顺序与上面为 FieldModifier 的产生式显示的顺序一致。
【讨论】:
通过current link 完成好答案by @Hobo above
8.1.1。类修饰符
类声明可以包含类修饰符。
ClassModifier: (one of) Annotation public protected private abstract static final strictfp
[...]
如果两个或多个(不同的)类修饰符出现在一个类中 声明,那么尽管不是必需的,但习惯上是他们 出现的顺序与上面在生产中显示的顺序一致 对于 ClassModifier。
【讨论】: