JAVA内部内的变量引用问题.
class Outer
{
private int index = 100;
class Middle
{
private int index = 80;
class Inner
{
private int index = 60;
void print()
{
int index = 40;
System.out.println(index);
System.out.println(this.index);
System.out.println(Middle.this.index);
System.out.println(Outer.Middle.this.index);
System.out.println(Outer.this.index);
}
}
void print()
{
Inner inner = new Inner();
inner.print();
}
Inner getInner()
{
return new Inner();
}
}
void print()
{
Middle middle = new Middle();
middle.print();
}
Middle getMiddle()
{
return new Middle();
}
}
class test
{
public static void main(String[] args)
{
Outer outer = new Outer();
/*outer.print();*/
Outer.Middle.Inner i = outer.getMiddle().getInner();
i.print();
}
}----------------------------------------------------------
void print()
{
int index = 40;
System.out.println(index);
System.out.println(this.index);
System.out.println(Middle.this.index);
System.out.println(Outer.Middle.this.index);
System.out.println(Outer.this.index);
}这一段何解?
class Outer
{
private int index = 100;
class Middle
{
private int index = 80;
class Inner
{
private int index = 60;
void print()
{
int index = 40;
System.out.println(index);
System.out.println(this.index);
System.out.println(Middle.this.index);
System.out.println(Outer.Middle.this.index);
System.out.println(Outer.this.index);
}
}
void print()
{
Inner inner = new Inner();
inner.print();
}
Inner getInner()
{
return new Inner();
}
}
void print()
{
Middle middle = new Middle();
middle.print();
}
Middle getMiddle()
{
return new Middle();
}
}
class test
{
public static void main(String[] args)
{
Outer outer = new Outer();
/*outer.print();*/
Outer.Middle.Inner i = outer.getMiddle().getInner();
i.print();
}
}----------------------------------------------------------
void print()
{
int index = 40;
System.out.println(index);
System.out.println(this.index);
System.out.println(Middle.this.index);
System.out.println(Outer.Middle.this.index);
System.out.println(Outer.this.index);
}这一段何解?
为什么是一样的?
因为本身都是在Outer类中调用,要不要都无所谓了,只在能唯一区分就行。像这种写法:Outer.Middle.Inner.this.index 你写成Inner.this.index也正确。都是在内部调用的。除非你在另外某个类中调用那就要写全称了。。
引用的index与靠左边最近的this结合?
还有就是this是谁的引用?
可以,主要看this究竟是哪个类的。这个看他的前缀就行了。