【问题标题】:Why do I have so many CLASS files in bin folder?为什么我的 bin 文件夹中有这么多 CLASS 文件?
【发布时间】:2013-05-28 22:24:57
【问题描述】:

我有一个在 Eclipse 中运行的 Java 项目,其主要可执行文件名为 GreatPlaces.java。在我的/bin 文件夹中,我假设只有一个名为GreatPlaces.class 的类文件。但是,我有几个,除了GreatPlaces.class 我还有GreatPlaces$1.classGreatPlaces$2.class ... GreatPlaces$22.class。谁能给我解释一下?谢谢。

【问题讨论】:

  • 您可能在代码中使用了anonymous classes
  • 我怎样才能找到它?而且,它对项目的最终发布是否有害?
  • 看看我评论中的链接。通常匿名类是使用new SomeClassOrInterface(){additional implementation for SomeClassOrInterface}; 创建的

标签: java eclipse class bin


【解决方案1】:

如果您的类中存在任何内部类,则将对其进行编译,并且类文件将为ClassName$InnerClassName。如果是匿名内部类,它将显示为数字。

示例:

public class TestInnerOuterClass {
    class TestInnerChild{

    }

    Serializable annoymousTest = new Serializable() {
    };
}

将生成的类是:

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

【讨论】:

    【解决方案2】:

    编译器将美元符号用于内部类。

    $ 符号表示内部类。如果它在$ 之后有一个number,那么它就是一个匿名内部类。如果它在$ 之后有一个name,那么它只是一个内部类。

    所以在你的情况下,这些代表匿名内部类

    【讨论】:

      【解决方案3】:

      这些类文件对应于您在程序中使用的匿名内部类。

      这是一个将被编译成自己的 .class 文件的事件处理程序示例:

      button.addActionLister(new ActionListener() {
          public void actionPerformed(ActionEvent e) { .... }
      });
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-03-14
        • 2011-03-31
        • 2016-02-17
        相关资源
        最近更新 更多