开发者社区> 问答> 正文

JAVA中为什么非静态内部类中不能有static修饰的属性,但却可以有常量?

已解决

JAVA中为什么非静态内部类中不能有static修饰的属性,但却可以有常量?

展开
收起
游客gaiketk6mpmke 2022-04-02 15:38:24 798 0
1 条回答
写回答
取消 提交回答
  • 推荐回答

    定义一个静态的域或者方法,要求在静态环境或者顶层环境,即如果加上 static class A变成静态内部类就ok非静态内部类 依赖于一个外部类对象,而静态域/方法是不依赖与对象——仅与类相关(细说了,就是加载静态域时,根本没有外部类对象)因此,非静态内部类中不能定义静态域/方法,编译过不了。

    而常量之所以可以(不论有无static),因为java在编译期就确定所有常量,放到所谓的常量池当中。常量的机制和普通变量不一样

    2022-04-02 16:36:48
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
Spring Cloud Alibaba - 重新定义 Java Cloud-Native 立即下载
The Reactive Cloud Native Arch 立即下载
JAVA开发手册1.5.0 立即下载