public class A { int i = 1. public A() { Thread thread = new Thread() { public void run() { for(..) { A.this.run(). try { sleep(1000). } catch(InterruptedException ie) { } } } }. thread.start(). } public void run() { System.out.println("i = " i). i . } public static void main(String[] args) throws Exception { new A(). } }
在上面这个例子中, thread 是一个匿名类对象,在它的定义中,它的 run 函数里用到了外部类的 run 函数。 这时由于函数同名,直接调用就不行了。这时有两种办法,一种就是把外部的 run 函数换一个名字,但这种办法对于一个开发到中途的应用来说是不可取的 。那么就可以用这个例子中的办法用外部类的类名加上 this 引用来说明要调用的是外部类的方法 run。 ----------------------------------------------