外部类名.this
的理解:
先来看代码:
public class mian {
public static void main(String[] args) {
Outer01 outer = new Outer01();
outer.in();
}
}
class Outer01{
private int a = 50;
private void fA(){}
public void in(){
class Inner01{ //内部类
private int a = 114514;
public void fB(){
System.out.println("内部类"+a);
System.out.println("外部类"+ Outer01.this.a;
}
}
Inner01 inner01 = new Inner01();
inner01.fB();
}
}
Outer01.this
-
其中的
Outer01
并不是指的类,而是被调用的对象——即mian方法中的outer.in()
-
那么就不难理解的
对象.this
指的就是outer.in()
所在的类(的实例)即outer
-
- 我们可以通过对比hashcode方便理解--------代码验证:
public class mian {
public static void main(String[] args) {
Outer01 outer01 = new Outer01();
outer01.in();
System.out.println(outer01.hashCode());
}
}
class Outer01{
private int a = 50;
private void fA(){}
public void in(){
class Inner01{
private int a = 114514;
public void fB(){
System.out.println("内部类"+a);
System.out.println("外部类"+ Outer01.this.a);
System.out.println(Outer01.this.hashCode());
}
}
Inner01 inner01 = new Inner01();
inner01.fB();
}
}
结果: