繁体   English   中英

在匿名内部类中引用实例变量

[英]Referring instance variable in anonymous inner class

class MyClass1 {

    int x = 10;

    public static void main(String[] args) {
        MyClass1 obj = new MyClass1();
        obj.execute();
    }

    private  void execute() {
        Thread t = new Thread(new Runnable(){
            @Override
            public void run() {
                System.out.println(this);
                System.out.println(MyClass1.this.x);
            }
        });
        t.start();
    }

}

这里是指匿名内部类的对象。 这就是为什么this.x不起作用的原因。 但是我们如何使用它来引用MyClass1对象呢? 请解释。 当我们执行Sysout(this)时,它会打印出com.java.MyClass1$1@3cd7c2ce,其中$指定内部类对象。 我不清楚。

您不能在静态方法中使用this关键字,因为this指向类的实例 ,而在静态方法中,您没有实例。

创建匿名内部类的方法不是实例方法,而是静态方法。

此外,语法MyClass1.this.x ,不this.x

要使其正常工作,请像这样重写它:

class MyClass1 {
    int x= 10;
    public static void main(String[] args) {
        new MyClass1().main();
    }

    private void main() {
        Thread t= new Thread(new Runnable(){

            @Override
            public void run() {
                System.out.println(this);

                System.out.println(MyClass1.this.x);
            }
        });
        t.start();
    }
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM