2012-03-21 59 views
0

从文体上讲,在构造函数中或在声明字段的位置初始化Java字段会更好吗?例如:内联或在构造函数中初始化字段

public class Foo { 
    private final List<String> l; 

    public Foo() { 
    this.l = new LinkedList<String>(); 
    } 
} 

...或

public class Foo { 
    private final List<String> l = new LinkedList<String>(); 
} 

我也通常青睐,因为它似乎更清楚的是前者。但是,后者显然会导致代码更紧凑。

+0

[最佳实践:初始化构造函数或声明中的类字段?]的可能的重复?(http://stackoverflow.com/questions/24551/best-practice-initialize-class-fields-in-constructor-or-at - 声明) – 2012-03-21 11:23:30

+0

前者对我来说很好,因为只有在创建对象时才会初始化您的列表。 – sgowd 2012-03-21 11:23:44

+0

虽然在第二种情况下也是如此。 – aioobe 2012-03-21 11:26:02

回答

4

我的经验法则是:如果

  • 把它在声明的时候......它可以(即如果它不依赖于构造函数的参数,例如)

  • ...它的值不需要任何形式的计算
  • ...无论使用哪个构造函数,值都是相同的。

否则,把它放在构造函数中。

通常我严格遵循官方的Java编码约定。在这种特殊情况下,约定没有提及任何事情,所以由每个程序员决定。然而,你选择哪一个,你可能想要符合你的选择。

1

如果你有多个构造函数,那么初始化(可能)需要重复,如果它没有在定义点上初始化。

相关问题