init方法的优点/缺点

时间:2017-11-13 13:42:02

标签: java

init方法相对于java中的构造函数有什么优缺点?它们都有相同的目的。如何在它们之间做出选择?

public class A {    
  private int x;

  public A(int x){
    this.x = x;
  }

  public void init(int x){
   this.x = x;
  }
}

这里我们可以使用构造函数或init方法。

2 个答案:

答案 0 :(得分:3)

你错了。他们具有相同的目的。

当您想使用new()运算符创建新对象时,构造函数始终

init方法在某些上下文中可能有意义,例如servlet内容(有关此方面的进一步阅读,请参阅here)。

请注意:在您的示例中,您的init方法可以更像 setter - 因为它只是设置相应的字段。

来自那里:

  • 首先,您要考虑要添加到课堂中的构造函数(通过询问:创建 new 类的实例需要哪些信息)
  • 如果有特殊需要,请考虑为特定字段添加setter - 或者如上所述,可能需要提供init()方法(如果object 创建初始化不可能在同一时间点发生)

答案 1 :(得分:1)

构造函数不是常规方法。从某种意义上说,当您调用new A()时,它会被始终调用。如果您不提供构造函数,Java会自动创建一个构造函数。因此,构造函数没有return(即它们返回this)并且始终与类具有相同的名称。

另一方面,init是一种常规方法,您可以调用 - 或不调用。对于任何类型的“初始化”方法,都没有普遍接受的共识。所以这取决于你想做什么。如果要确保new调用逻辑,请使用构造函数。如果您想拥有自己的东西,请使用普通方法。你可以混合搭配,一定要写一篇关于如何使用你的课程的好的文档