关于字段的私有静态最终关键字的快速Java问题

时间:2010-05-14 06:02:07

标签: java static private final

我宣布了一个字段:

private static final String filename = "filename.txt";

首先,private static final的顺序是否重要?如果没有,是否有标准接受的序列或约定?

其次,我的应用程序中的filename是固定的。这是保存其价值最好的吗?

7 个答案:

答案 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)

  1. 没有。但这就是我通常看到的序列。

  2. 这是一个合理的选择,但有些人更喜欢配置文件,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)

  1. 顺序并不重要,但您可以随时使用它 - 只有6种可能性进行测试。

  2. 我不知道任何约定,虽然我把可见性修饰符放在第一位(公共/私人/受保护),这样你就能看到它并且排成一行。

  3. 如果它已修复,那么你可以这样做,但我总是认为某些东西是一个常量,只是为了稍后发现(例如在测试期间)我要传递它。在命令行上的参数或者属性文件适用于该情况,并且设置的工作量最小。

答案 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)

通过by @Hobo above

完成答案current link
  

8.1.1。类修饰符

     

类声明可能包含类修饰符。

     ClassModifier:
         (one of) 
         Annotation public protected private 
         abstract static final strictfp

[...]

  

如果一个类中出现两个或更多(不同的)类修饰符   宣言,然后按惯例,但不是必需的,他们   出现顺序与生产中上面显示的顺序一致   对于ClassModifier。