java编译的类包含美元符号

新手上路,请多包涵

我一直在使用 Eclipse 作为我的 IDE。我还使用它将我的应用程序导出到 JAR 文件中。当我查看 JAR 文件中的类时,我的一些类包含该类的名称、一个美元符号,然后是一个数字。例如:

 Find$1.class
Find$2.class
Find$3.class
Find.class

我注意到它在更大的班级上这样做。这是因为类变得太大了,它把它编译成多个类吗?我用谷歌搜索并查看了多个论坛,并搜索了 Java 文档,但没有找到任何与之相关的内容。有人可以解释吗?

原文由 Frizinator 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 424
2 个回答

内部类(如果您的类中存在)将被编译并且类文件将为 ClassName$InnerClassName 。在匿名内部类的情况下,它将显示为数字。类的大小(Java 代码)不会导致生成多个类。

例如给定这段代码:

 public class TestInnerOuterClass {
    class TestInnerChild{

    }

    Serializable annoymousTest = new Serializable() {
    };
}

将生成的类将是:

  1. TestInnerOuterClass.class
  2. TestInnerOuterClass$TestInnerChild.class
  3. TestInnerOuterCasss$1.class

更新:

使用匿名类并不被认为是一种不好的做法,它只取决于用法。

检查关于 SO 讨论

原文由 mprabhat 发布,翻译遵循 CC BY-SA 3.0 许可协议

这是因为您在这个更大的类中有匿名类。它们使用此命名约定进行编译。

请参阅 匿名类难题

原文由 jjathman 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题