35

我声明一个字段:

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

首先,顺序private static final重要吗?如果没有,是否有标准的公认顺序或约定?

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

4

7 回答 7

51

我在 Eclipse 中使用Checkstyle,如果声明的顺序与您指定的顺序不同,则会发出警告,并引用 Java 语言规范 (JLS)。例如,

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

结果是

'static' modifier out of order with the JLS suggestions.

他们有这个页面,其中列出了他们期望的顺序,尽管按照该页面上的链接到JLS,我看不到任何东西来支持他们对建议顺序的断言。

话虽如此,他们建议的顺序似乎与我见过的大多数代码中的顺序相对应,因此它似乎与采用任何约定一样好。

于 2010-05-14T07:26:21.683 回答
23
  1. 不,但这是我通常看到使用的顺序。

  2. 这是一个合理的选择,但有些人更喜欢配置文件,属性或其他文件格式(例如 XML)。这样,您无需重新编译即可更改文件名。

于 2010-05-14T06:03:57.813 回答
13

在 Java 中给常量(static final值)一个全大写的名字是很常见的,所以我会写:

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

另请参阅Java 编程语言的代码约定。(这些是大多数 Java 程序员使用的 Sun 的代码约定)。

于 2010-05-14T08:07:45.657 回答
9

这些关键字中最被接受的顺序是private static final. 您还可以使用PSF模式记住这些关键字的顺序:

P => 私有 / 公共 / 受保护
S => 静态 / 抽象 / ...
F => 最终

于 2014-02-01T18:22:46.630 回答
3

请参阅:http ://docs.oracle.com/javase/specs/jls/se5.0/html/classes.html#8.3.1

8.3.1 字段修饰符

FieldModifiers:
  FieldModifier
  FieldModifiers FieldModifier

FieldModifier:
  Annotation public protected private
  static final transient volatile之一

...

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

于 2013-10-12T12:35:24.043 回答
3
  1. 顺序无关紧要,但您可以随时使用它 - 只有 6 种可能性进行测试。

  2. 我不知道有任何约定,尽管我将可见性修饰符放在首位(公共/私有/受保护),这样您就可以看到它并排成一行。

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

于 2010-05-14T06:07:45.600 回答
3

通过当前链接完成上面@Hobo的好答案

8.1.1。类修饰符

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

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

[...]

如果两个或多个(不同的)类修饰符出现在一个类声明中,那么尽管不是必需的,但习惯上它们的出现顺序与上面 ClassModifier 产生式中所示的顺序一致。

于 2015-09-27T15:15:00.277 回答