在Java中初始化ivars

时间:2013-11-28 18:11:16

标签: java instance-variables getter-setter

在声明和设置默认ivars之间是否存在差异或首选偏好:

public class Foo
{
   private int yes = 0;
   private String name = "";

   //...
   //constructors, setters, getters, etc.
}

public class Foo
    {
       private int yes;
       private String name;

       public Foo()
       {
          yes = 0;
          name = "";
       }
       //...
       //setters, getters, etc.
    }

另外,在constructors以及Foo中的其他方法中,我应该设置并使用ivarsaccessor方法获取mutator,或者只是分配他们直接?

3 个答案:

答案 0 :(得分:0)

原始类型(在您的情况下为int)会自动初始化为默认值,因此没有理由将其显式设置为0;

Strings和其他对象如何:这完全取决于您的偏好。我更喜欢 not 在构造函数中初始化它。但请记住,如果在构造函数中初始化字段,则可以处理异常,如果字段初始化会引发异常

答案 1 :(得分:0)

同样的事情。外部类需要Accessor和mutators方法。

答案 2 :(得分:0)

没关系,这基本上是个人偏好。 Java编译器将初始化从类复制到每个构造函数(没有额外的调用,它实际上是字节码中的直接复制)。

就个人而言,我更愿意将与数据无关的初始化放到类中,同时将可能依赖于构造函数参数的数据放入构造函数本身。