init方法相对于java中的构造函数有什么优缺点?它们都有相同的目的。如何在它们之间做出选择?
public class A {
private int x;
public A(int x){
this.x = x;
}
public void init(int x){
this.x = x;
}
}
这里我们可以使用构造函数或init方法。
答案 0 :(得分:3)
你错了。他们不具有相同的目的。
当您想使用new()
运算符创建新对象时,构造函数始终。
init方法在某些上下文中可能有意义,例如servlet内容(有关此方面的进一步阅读,请参阅here)。
请注意:在您的示例中,您的init方法可以更像 setter - 因为它只是设置相应的字段。
来自那里:
init()
方法(如果object 创建和初始化不可能在同一时间点发生)答案 1 :(得分:1)
构造函数不是常规方法。从某种意义上说,当您调用new A()
时,它会被始终调用。如果您不提供构造函数,Java会自动创建一个构造函数。因此,构造函数没有return
(即它们返回this
)并且始终与类具有相同的名称。
另一方面,init
是一种常规方法,您可以调用 - 或不调用。对于任何类型的“初始化”方法,都没有普遍接受的共识。所以这取决于你想做什么。如果要确保new
调用逻辑,请使用构造函数。如果您想拥有自己的东西,请使用普通方法。你可以混合搭配,一定要写一篇关于如何使用你的课程的好的文档。