在面向对象的函数式编程中,不可变对象是创建后状态无法更改的对象。这与可变对象相反,可变对象可以在创建后进行修改。
下面是可变或不可变类?我认为这是可变的,因为singleton
在之后new MavenPush(project)
,静态字段会发生变化,但是我需要100%正确的答案。这是古怪的代码,但就像Java代码一样
final class MavenPush {
private static volatile MavenPush singleton = null
private final def project
private MavenPush(project) {
this.project = project
}
static MavenPush with(project) {
if (singleton == null) {
synchronized (MavenPush.class) {
if (singleton == null) {
singleton = new MavenPush(project)
}
}
}
return singleton
}
}
该类的实例是不可变的,随着该类的字段发生突变,该类是可变的。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句