Java 关于构造函数与静态工厂方法
我有一个问题,就是我们是否在类中有构造函数,如下所示Java 关于构造函数与静态工厂方法,java,Java,我有一个问题,就是我们是否在类中有构造函数,如下所示 class A { A{} } 现在,构造函数的替代方法是什么,我选择了静态工厂方法 class A { public staic A getinstance() { return new A(); } } 在上面的方法中,根据分析,它将返回不可变对象,但我对这个分析有疑问,因为这个对象可以用静态工厂方法返回,以后可以更改,如何使它完全不可变。。!!请建议 构造函数的替代方法:静态工厂方法不是构造函数的替代方法。但是您可以
class A
{
A{}
}
现在,构造函数的替代方法是什么,我选择了静态工厂方法
class A
{
public staic A getinstance()
{
return new A();
}
}
在上面的方法中,根据分析,它将返回不可变对象,但我对这个分析有疑问,因为这个对象可以用静态工厂方法返回,以后可以更改,如何使它完全不可变。。!!请建议 构造函数的替代方法:
静态工厂方法
不是构造函数的替代方法。但是您可以使用与构造函数等效的块初始化
,但缺点是您不能像这样向其传递参数:
class B {
private int i;
//intialization block, can not pass arguments like constructor
{
i=2;
}
//getter and setters
}
-->这个类不会返回不可变的对象。要使类不可变,请使类为final,所有成员为private和final,只提供getter方法和参数化构造函数。请参见以下示例:
final class A
{
final private int b;
public A(int b)
{
this.b = b;
}
public int getB() {
return this.b;
}
}
构造函数的替代方法:
静态工厂方法
不是构造函数的替代方法。但是您可以使用与构造函数等效的块初始化
,但缺点是您不能像这样向其传递参数:
class B {
private int i;
//intialization block, can not pass arguments like constructor
{
i=2;
}
//getter and setters
}
-->这个类不会返回不可变的对象。要使类不可变,请使类为final,所有成员为private和final,只提供getter方法和参数化构造函数。请参见以下示例:
final class A
{
final private int b;
public A(int b)
{
this.b = b;
}
public int getB() {
return this.b;
}
}
不变性与创建对象的方式无关。i、 e.来自施工人员或工厂方法
JDK使用Collections.unmodifiableCollection
和相关方法为集合提供了一些方法
您还可以将其合并到设计中,这在处理并发应用程序时非常有用
这里给出了一个完整的策略:不变性与您创建对象的方式无关。i、 e.来自施工人员或工厂方法
JDK使用Collections.unmodifiableCollection
和相关方法为集合提供了一些方法
您还可以将其合并到设计中,这在处理并发应用程序时非常有用
这里给出了一个完整的策略:这可以帮助您[不可变对象][1][1]:请查看此链接[1]:这可以帮助您[不可变对象][1][1]:请查看此链接[1]: