1

在我目前的情况下,我对在 java 上选择正确的变量感到非常困惑。例如我有这个代码:

A object1 = new A(){
    onUpdate(){
        B object2 = new B(){
            onStarted(){
                 this.setColor();
            }
        };
    }
};

该代码只是描述我的问题的示例。问题是

this.setColor();

“this”总是指向object2。我想“this”指向object1。我怎样才能做到这一点?

4

2 回答 2

4

打电话

setColor

鉴于此方法仅存在于“父”类中,将调用正确的方法。

你也可以试试这个:

public class Test{
    public void setColor(){}
    public class Test2{
        void onUpdate(){
            Test.this.setColor();
        }
    }    
}

Java 文档在这里查看后一种解决方案

于 2013-07-05T07:05:44.430 回答
3

你可以这样做:

final A object1 = new A(){
    onUpdate(){
        B object2 = new B(){
            onStarted(){
                 object1.setColor();
            }
        };
    }
};

因为this在里面,所以引用当前实例是B正常的。thisB

另请注意,要使其正常工作object1,必须是final.

于 2013-07-05T07:04:13.347 回答