内部类的.this和.new

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();


评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值