Java之静态方法中的内部类

静态方法中不能直接创建内部类,为什么呢?
在外部调用静态方法时,可以使用"类名.方法名"的方式,也可以使用"对象名.方法名"的方式。而实例方法只有后面这种方式。也就是说,调用静态方法可以无需创建对象。
 
静态方法在访问本类的成员时,只允许访问静态成员(即静态成员变量和静态方法),而不允许访问实例成员变量和实例方法。
 
 
在静态方法中,当尝试直接去 new一个内部类(没有先 new 该内部类的外部类)的时候,由于静态方法无需创建对象,静态方法会尝试直接创建一个内部类(不会去创建该内部类的外部类,但矛盾的是内部类能访问各成员变量意味着一定存在外部类实体对象(内部类存在的本身的前提是有该内部类的外部类)。
 
 
所以在这个地方出现了矛盾,即静态方法中不能直接创建内部类。
有以下几种解决办法:
1. new内部类时需要加final修饰(必须final!);
  
  
2. 写一个非静态方法!
3. new 外部类().非静态方法。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值