内部类的.this和.new

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/u011514810/article/details/51225456

1.在内部类中,外部类名+.this是生成外部类对象的引用。此会在编译器受检,没有任何运行时开销。

package Inner;

public class DotThis {
	void f(){System.out.println("DotThis.f()");}
	public class Inner{
		public DotThis outer(){
	<span style="white-space:pre">		</span>return DotThis.this;
		}
	}
	public Inner inner(){
		return new Inner();
	}
	public static void main(String[] args) {
		DotThis dt=new DotThis();
		DotThis.Inner in=dt.inner();
		in.outer().f();
	}
}
运行结果:DotThis.f()

2.外部类对象的引用+.new生成与某个外部类对应的内部类的对象

package Inner;

public class DotNew {
	public class Inner{
		public int f(){
			return 11;
		}
    }
	public static void main(String[] args) {
		DotNew dt=new DotNew();
		DotNew.Inner in=dt.new Inner();
		System.out.println(in.f());
	}
}
运行结果:11


由上可以总结出创建内部类对象有两种途径:

1)在内部类创建一个方法,该方法指向内部类的一个引用,如代码一中的inner()方法:

public Inner inner(){
	return new Inner();
}
2)使用.new创建一个内部类对象,如代码二中:

DotNew dt=new DotNew();
DotNew.Inner in=dt.new Inner();


阅读更多
换一批

没有更多推荐了,返回首页