2

このクラスがあるとします:

class MyClass {
    int myInt

    MyClass(myInt) {
        this.myInt = myInt
    }

    def myMethod() {
        print this.myInt
    }
}

そして、私が持っている場所:

def myClass1 = new MyClass(1)
def myMethodClosure = myClass1.&myMethod
def myClass2 = new MyClass(2)

今私が呼び出すと、1を出力するインスタンスで呼び出されます。私が望むのは、同じmyMethodClosure()ものmyMethod()を別のインスタンスで呼び出すことです。この場合は、2を出力できるようにします。これは可能ですか?myClass1myMethodClosuremyClass2

を使用してみsetDelegate()ましたが、うまくいきません。また、クロージャ クラス内にフィールドがあることもthisObject確認しましたが、セッターはなく、ゲッターのみです。

4

2 に答える 2

2

クロージャーには、動作する囲みオブジェクトが「含まれる」と思います。実行時にクロージャ内で「this」をオーバーライドすることはできません。

于 2013-11-04T09:56:29.663 に答える