我宣布了一个字段:
private static final String filename = "filename.txt";
首先,private static final
的顺序是否重要?如果没有,是否有标准接受的序列或约定?
其次,我的应用程序中的filename
是固定的。这是保存其价值最好的吗?
答案 0 :(得分:49)
我在Eclipse中使用Checkstyle,如果声明与您指定的声明的顺序不同,则会引发警告,引用Java语言规范(JLS)。例如,
private final static String filename = "filename.txt";
结果
'static' modifier out of order with the JLS suggestions.
他们有this page列出了他们期望的顺序,但是按照该页面上的链接一直到JLS我看不到任何东西来支持他们对建议订单的断言。
话虽如此,他们建议的顺序似乎与我见过的大多数代码中的顺序相对应,所以它似乎与任何采用的惯例一样好。
答案 1 :(得分:23)
没有。但这就是我通常看到的序列。
这是一个合理的选择,但有些人更喜欢配置文件,Properties或其他文件格式(例如XML)。这样,您可以在不重新编译的情况下更改文件名。
答案 2 :(得分:13)
在Java中常见的是给常量(static final
值)一个全大写的名称,所以我会写:
private static final String FILENAME = "filename.txt";
另见Code Conventions for the Java Programming Language。 (这些是大多数Java程序员使用的Sun代码约定。)
答案 3 :(得分:5)
这些关键字最受欢迎的顺序是private static final
。您还可以使用 PSF 模式记住这些关键字的顺序:
P =>私人/公共/受保护的 S => static / abstract / ...
F =>最终
答案 4 :(得分:3)
顺序并不重要,但您可以随时使用它 - 只有6种可能性进行测试。
我不知道任何约定,虽然我把可见性修饰符放在第一位(公共/私人/受保护),这样你就能看到它并且排成一行。
如果它已修复,那么你可以这样做,但我总是认为某些东西是一个常量,只是为了稍后发现(例如在测试期间)我要传递它。在命令行上的参数或者属性文件适用于该情况,并且设置的工作量最小。
答案 5 :(得分:3)
请参阅:http://docs.oracle.com/javase/specs/jls/se5.0/html/classes.html#8.3.1
8.3.1字段修饰符
FieldModifiers:
FieldModifier
FieldModifiers FieldModifier
FieldModifier:其中之一
注释公共保护私人
静态最终瞬态易变性
...
如果两个或多个(不同的)字段修饰符出现在字段声明中,则习惯虽然不是必需的,但它们的显示顺序与上面在FieldModifier的制作中显示的顺序一致。
答案 6 :(得分:3)
8.1.1。类修饰符
类声明可能包含类修饰符。
ClassModifier: (one of) Annotation public protected private abstract static final strictfp
[...]
如果一个类中出现两个或更多(不同的)类修饰符 宣言,然后按惯例,但不是必需的,他们 出现顺序与生产中上面显示的顺序一致 对于ClassModifier。