oop - 下面是可变类还是不可变类?

标签 oop groovy

In object-oriented and functional programming, an immutable object is an object whose state cannot be modified after it is created. This is in contrast to a mutable object, which can be modified after it is created.

下面是可变类还是不可变类?我认为它是可变的,因为静态字段 singletonnew MavenPush(project) 之后发生了变化,但我需要 100% 正确的答案。这是 Groovy 代码,但它就像 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
    }
}

最佳答案

类的实例是不可变的,当类的字段发生变化时,类是可变的。

关于oop - 下面是可变类还是不可变类?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51651388/

相关文章:

actionscript-3 - Actionscript 3.0 : Why is it a good idea to detach the code for moving an object from the object itself (eg. Ball 和 Ball Mind)

java - Java/Groovy 中的 Python uniform() 替代方案(生成随机 float )

file - 如何在 Gradle 自定义任务中初始化 FileTree 字段?

java - HashMap 的简单方法似乎是正确的,但它不起作用

oop - UML 和算法

jenkins-pipeline readJSON - 如何访问嵌套元素

Scala 闭包上下文

gradle - Gradle脚本:ant.copy任务中的Classcast异常

mysql - Yii:引用多个表中行的最佳方式?

javascript - 为什么我的 javascript 对象方法返回未定义?