要“null”或不“null”我的类的属性
当我用Java编写一个类时,我喜欢初始化直接设置为默认值的属性和由构造函数中的调用者设置的属性,如下所示:
public class Stack { private List list; private int size = 0; public Stack(int initialCapacity) { list = new ArrayList(initialCapacity); } // remainder omitted }
现在假设我有一个Tree类:
public class Tree { private Node root = null; // no constructor needed, remainder omitted }
我应该将root属性设置为null,以标记它默认设置为null,还是省略空值?
编辑:
在阅读了LinkedList和ArrayList的源代码后,我想出了这个想法,它们都明确地将它们的属性(LinkedList中的大小和ArrayList中的firstIndex / lastIndex)设置为0。
无需将reference-typed属性显式初始化为null
。 默认情况下,它将初始化为null。 类似地,基元类型有默认的初始化规则:
- 布尔属性初始化为
false
,和 - integral(包括
char
),float
和double
属性都被初始化为零。
因此,示例中的size
初始化也是绝对不必要的。
因此,无论您是否对其进行初始化,这纯粹是一种风格问题。 我个人认为它不会提高可读性,因此浪费时间。 (我不会编写我的代码,由不了解Java基础知识的人维护…)
由于您依赖于具有默认值(0, null
)的这些变量用于新实例,因此我将初始化它们以向读者说明这种情况。 否则,他们可能需要进一步阅读才知道没有构造函数初始化变量(可能是另一个值)。
编辑:当然,您不需要初始化; 我假设问题是关于首选的风格,这是我的偏好。
这是个人偏好,但恕我直言,最好省略它。 默认情况下,引用初始化为null,因此您只会使代码混乱。 代码越少越好。