为什么内部类可以有静态final成员但不能有静态方法?

2023-11-24

为什么我们可以在非静态内部类中拥有静态最终成员但不能拥有静态方法?

我们可以在外部类之外访问内部类的 static Final 成员变量而不实例化内部类吗?


您可以在 a 中使用静态方法static“内”类。

public class Outer {
    static String world() {
        return "world!";
    }
    static class Inner {
        static String helloWorld() {
            return "Hello " + Outer.world();
        }
    }   
    public static void main(String args[]) {
        System.out.println(Outer.Inner.helloWorld());
        // prints "Hello world!"
    }
}

然而,准确地说,Inner根据 JLS 术语,称为嵌套类 (8.1.3):

内部类可以继承不是编译时常量的静态成员,即使它们可能没有声明它们。不是内部类的嵌套类可以根据 Java 编程语言的通常规则自由声明静态成员。


还有,它是NOT内部类可以具有完全正确的static final会员;更准确地说,它们还必须是编译时常量。以下示例说明了差异:

public class InnerStaticFinal {
    class InnerWithConstant {
        static final int n = 0;
        // OKAY! Compile-time constant!
    }
    class InnerWithNotConstant {
        static final Integer n = 0;
        // DOESN'T COMPILE! Not a constant!
    }
}

在这种情况下允许编译时常量的原因很明显:它们在编译时内联。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

为什么内部类可以有静态final成员但不能有静态方法? 的相关文章

随机推荐

  • 自动映射器:将 List 映射到 List

    我怎样才能映射一个List
  • 并行查询工作线程陷入死锁

    我运行 SQL Server Trace 来跟踪一些死锁问题 这条评论让我深受打击Parallel query worker thread was involved in a deadlock作为僵局的一个原因 Q1 这是否意味着同一个查询
  • Rails:wkhtmltopdf RuntimeError(wkhtmltopdf 的位置未知)

    我正在使用 Ubuntu 11 04 在 Ruby on Rails 中开发一个应用程序 在应用程序中我需要生成pdf文档 所以我正在使用 wicked pdf 和 wkhtmltopdf binary gems 在我的系统的开发环境中一切
  • Node.js 加密中的 HMAC 与 Google Apps 脚本 (GAS)

    你能解释一下使用 Node JS 的加密模块和 Google Apps 脚本创建 HmacSha512 签名之间的区别吗 代码 1 Node JS var secret my secret var message message var c
  • Django 喜欢按钮

    我一直在尝试为我的应用程序的每个板上的宠物图片创建一个 点赞 按钮 但我不知道如何创建一个按钮 因为它包含一个整数 通常 我对我创建的功能有一个想法和理解 当用户点击 喜欢 按钮时 点赞按钮会加1 并显示在图片附近 这是我的图片模块 cla
  • 玩2.1 Json序列化traits?

    我有这个 package models import play api libs json import play api libs functional syntax object ModelWrites implicit val tmo
  • CRM 2011 工作流程“无效指针”错误

    我在 CRM 2011 中有一个自定义工作流程 它是针对自定义实体记录手动触发的 当选择单个记录进行处理时 工作流始终会成功 但是 当选择多条记录时 至少有一条会失败 即使使用相同的数据 每次尝试提供的错误似乎也有所不同 到目前为止我遇到的
  • Javascript toLocaleTimeString() 在最新版本的 Chrome 中返回 ASCII 226 而不是空格

    我们使用 Javascript 函数 toLocaleTimeString 来解析日期 时间 最新版本的 Chrome 在秒和 AM PM 部分之间突然返回 ASCII 226 Edge 没有任何问题 旧版本的 Chrome 也没有任何问题
  • VueRouter 默认子路由不带尾部斜杠

    VueRouter 总是在子路由的路径之前添加尾部斜杠 假设我有一个这样的路由配置 const routes path home components default HomeBase children path component Hom
  • 使用 OpenCV Python 检测并可视化两个图像之间的差异

    我有两张图片 希望能清楚地表明差异所在 我想为这两个图像添加颜色 以便用户可以在一两秒内清楚地发现所有差异 例如 这里有两张有一些差异的图像 leftImage jpg rightImage jpg 我目前使差异变得明显的方法是创建一个蒙版
  • 如何对 BindingList 进行排序?

    我有数千个 MyClass 对象存储在BindingList
  • 标准差 NumPy 函数的内存消耗

    我目前正在使用 GDAL 的 Python 绑定来处理相当大的栅格数据集 gt 4 GB 由于将它们立即加载到内存中对我来说不是可行的解决方案 因此我将它们读入较小的块并逐段进行计算 为了避免为每个块读取进行新的分配 我正在使用buf ob
  • 如何在iOS应用程序项目中正确嵌入第3方.dylib文件以供App Store发布?

    我正在使用支持 H264 的 PJSIP 库构建一个 iOS 应用程序 构建 H264 时 我得到 1 个 a 文件和 2 个 dylib 文件 我尝试通过添加为 嵌入式库 以及创建一个单独的框架然后将其添加到 嵌入式库 来在我的项目中使用
  • 使用非连续行号的数据子集

    我有一个 30 行 100 列 X 的数据框 我想创建一个新的数据框 Y 其中包含较大数据框中的特定行 例如 我希望数据框 Y 包含第 1 行到第 5 行 第 10 行到第 14 行以及第 20 行 我知道我可以使用代码 Y lt X 1
  • 使用 g++ 的符号可见性

    我在 Linux Mac 下编译了一个隐藏了符号的 C 库 我用过 attribute visibility hidden 对于我所有的课程并使用选项进行编译 c O2 fPIC MMD MP MF Mac下 使用Mac 依赖项 工作完成得
  • 检测已安装的 Excel 版本(和 Service Pack)

    我需要能够从我正在开发的一些 NET 代码中检测我的计算机中安装的 Excel 版本 我目前正在使用应用程序版本为此 但它没有给我有关服务包的信息 我宁愿避免这样的事情 http www mvps org access api api006
  • 添加代码块而不执行它

    In knitr 是否有任何选项允许插入代码而不执行 我只希望代码以与其他代码相同的样式出现在文档中knitr代码块 我对 Rnw 文档中的 LaTeX 选项特别感兴趣 就像 Ramnath 评论的那样 这可以通过使用来实现eval FAL
  • Facebook 的 5000 个帖子 API 限制

    我对 Facebook 限制 API 调用的方式有疑问 到本文底部 http developers facebook com blog post 478 脸书 说 除了上面列出的每个表和连接的文档中提到的限制之外 了解我们在运行可见性检查之
  • 从 WCF 中分块获取大 List

    我正在尝试从 WCF 服务获取实体列表 我遇到的问题是网络上存在一些严重的延迟 因此数据需要相当长的时间才能到达我的客户端 我的想法是找到一种方法来获取前 1000 个 然后将它们推送到 UI 同时等待下一个到达 我想这就像分页 但我只想对
  • 为什么内部类可以有静态final成员但不能有静态方法?

    为什么我们可以在非静态内部类中拥有静态最终成员但不能拥有静态方法 我们可以在外部类之外访问内部类的 static Final 成员变量而不实例化内部类吗 您可以在 a 中使用静态方法static 内 类 public class Outer