首页 > 解决方案 > 类主体中实例变量的默认值

问题描述

当我们在类的主体中写Instance变量,并且给定构造函数初始化它们,那么为什么我们可以直接在构造函数之外初始化变量而不去构造函数呢?这不是建造者的职责吗?

class Sample{
LinkedList<String> string=new LinkedList<>();//Initializing in the body of the class
String value="Hi";//Initializing in the body of the class

   public Sample(){
   //shouldnt string and value initialize here?}
}

标签: javaclassconstructorinitializationinstance

解决方案


字段初始化发生在构造函数主体执行之前。这在某些情况下很有用,例如,如果您有多个构造函数,并且该字段应该具有相同的初始值。在您的示例中,您总是希望从一个空列表开始,因此您可以避免空指针异常。这对于一般的集合来说确实是一个很好的做法。


推荐阅读