singletonbugtest.groovy

来自「大名鼎鼎的java动态脚本语言。已经通过了sun的认证」· GROOVY 代码 · 共 99 行

GROOVY
99
字号
// TODO: GROOVY-435class SingletonBugTest extends GroovyTestCase {    public void testPrivate() {        def x = SingletonBugPrivate.getInstance()        def y = SingletonBugPrivate.getInstance()        println "Get one private instance: $x"        println "Get another private instance: $y"        assert x == y        // println(SingletonBugPrivateSecond.getInstanceSecond())        // println(SingletonBugPrivateSecond.doTestSecond())        shouldFail { println(SingletonBugPrivateSecond.getInstanceSecond()) }        shouldFail { println(SingletonBugPrivateSecond.doTestSecond()) }    }    public void testProtected() {        def x = SingletonBugProtected.getInstance()        def y = SingletonBugProtected.getInstance()        println "Get one protected instance: $x"        println "Get another protected instance: $y"        assert x == y        println(SingletonBugProtectedSecond.getInstanceSecond())        println(SingletonBugProtectedSecond.doTestSecond())        x = SingletonBugProtectedSecond.getInstanceSecond()        y = SingletonBugProtectedSecond.doTestSecond()        assert x != y    }}class SingletonBugPrivate {    private static SingletonBugPrivate instance1 = null    private SingletonBugPrivate() {    }        static SingletonBugPrivate getInstance() {        if (instance1 == null)            instance1 = new SingletonBugPrivate()        return instance1    }        // private static SingletonBugPrivate getInstance2() {    //     if (instance1 == null)    //         instance1 = new SingletonBugPrivate()    //     return instance1    // }}class SingletonBugProtected {    private static SingletonBugProtected instance1 = null    protected SingletonBugProtected() {    }        static SingletonBugProtected getInstance() {        if (instance1 == null)            instance1 = new SingletonBugProtected()        return instance1    }        // private static SingletonBugProtected getInstance2() {    //     if (instance1 == null)    //         instance1 = new SingletonBugProtected()    //     return instance1    // }}class SingletonBugPrivateSecond extends SingletonBugPrivate {    static SingletonBugPrivate getInstanceSecond() {        return doTestSecond()    }    static SingletonBugPrivate doTestSecond() {        return new SingletonBugPrivate()    }}class SingletonBugProtectedSecond extends SingletonBugProtected {    static SingletonBugProtected getInstanceSecond() {        return doTestSecond()    }    static SingletonBugProtected doTestSecond() {        return new SingletonBugProtected()    }}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?