Java init方法的优缺点

Java init方法的优缺点,java,Java,与java中的构造函数相比,init方法有哪些优点/缺点?它们都有相同的目的。如何在两者之间做出选择 public class A { private int x; public A(int x){ this.x = x; } public void init(int x){ this.x = x; } } 这里我们可以使用构造函数或init方法。你错了。他们没有相同的目的 当您想使用new()操作符创建新对象时,构造函数总是必需的 init方法在

与java中的构造函数相比,init方法有哪些优点/缺点?它们都有相同的目的。如何在两者之间做出选择

public class A {    
  private int x;

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

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

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

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

当您想使用
new()
操作符创建新对象时,构造函数总是必需的

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

请注意:在您的示例中,可以将您的init方法更多地看作是一个setter——因为它只是设置了相应的字段

从那里传来:

  • 首先,考虑要放入类中的构造函数(通过询问:创建类的实例需要哪些信息)
  • 如果存在<强>特殊< /强>需要,则考虑为特定字段添加设置程序,或者如上所述,可能需要提供<代码>()>代码>方法(在对象<强>创建< /强>和<强>初始化/ <>强>不能在同一时间点发生)

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


另一方面,
init
是一个常规方法,您可以调用它,也可以不调用。对于任何类型的“init”方法都没有公认的共识。所以这取决于你想做什么。如果要确保
new
调用您的逻辑,请使用构造函数。如果你想拥有自己的东西,使用简单的方法。你可以混合搭配,只要确保写一篇关于你的类应该如何使用的好文档。

“它们都有相同的目的”,不,它们没有。你总是需要一个构造函数。如果您的所有构造函数都包含相同的代码,那么init方法可能会派上用场,但我建议将其设置为私有,这样子类就不会更改它。我注意到您的问题仍然是“开放的”:您没有接受答案。请看一看,然后决定是否要回答。或者让我知道是否有什么我可以做的,以加强我的投入,使其值得接受。接受帮助未来的读者确定问题是否得到解决,并对花时间回答你的人表示感谢。谢谢你的回复。我同意你所说的。我的问题是init方法和参数化构造函数都是用来初始化对象的。你喜欢哪一种?为什么?我想我回答了这两个问题。您可以从一个或多个构造函数开始。如果必须,可以使用init方法。这就是一切。