下面是可变或不可变类?

亚历山大·萨文

在面向对象的函数式编程中,不可变对象是创建后状态无法更改的对象。这与可变对象相反,可变对象可以在创建后进行修改。

下面是可变或不可变类?我认为这是可变的,因为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
    }
}
弗洛里安·萨利霍维奇(Florian Salihovic)

该类的实例是不可变的,随着该类的字段发生突变,该类是可变的。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章