普通内部类静态成员

java普通内部类不能有static成员,为什么可以有final static成员?

最近在重温”thinking in java”巩固java基础知识,读到7.6.4 static内部类的讲解中,提到static成员只能位于一个类的外部级别,所以普通内部类不可拥有static数据。不是很懂,于是写代码验证一下。

public class Parcle {
    private  class PContents{
        private static int a = 5;
    }
}

IDE的确报错,提示

Inner classes cannot have static declarations

于是网上查找答案,大概明白了,普通内部类是依赖于外部类实例的,有外部类实例才能有内部类。而static成员是类所有,与实例无关,当普通内部类有静态成员时就出现矛盾了。所以普通内部类是无法拥有静态成员的。


本以为问题就此结束,但当我对静态成员加上final修饰时,IDE不报错了。目前还没理解为什么会这样的,初步想法时static和final static成员在内存的存储位置有关,先留下问题,待日后查阅相关资料再解答。

public class Parcle {
    private  class PContents {
        private final static int a = 5;
    }

}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值