title: Why does Java code with an inner class generates a third SomeClass$1.class file?
body: <p>If I have an inner class, like this:</p>
  
  <pre><code>public class Test
  {
      public class Inner
      {
          // code ...
      }
  
      public static void main(String[] args)
      {
          // code ...
      }
  }
  </code></pre>
  
  <p>When I compile it, I expect it should generate two files:</p>
  
  <pre><code>Test.class
  Test$Inner.class
  </code></pre>
  
  <p>So why do I sometimes see classfiles like SomeClass$1.class, even though SomeClass does not contain an inner class called "1"?</p>