title: Are static anonymous classes definitely wrong in Java?
body: <p>I've read elsewhere that a static anonymous class doesn't make sense - that all anonymous classes should be tied to an instance of the enclosing type.  But the compiler let's you do it.  Here's an example:</p>
  
  <pre><code>class Test {
  
      /*
       * What's the difference at between
       * Test.likeThis and Test.likeThat?        
       */
  
      // This is obviously okay:
      private static final class LikeThat {
          @Override
          public String toString() { return "hello!"; }       
      }
      public static Object likeThat = new LikeThat();
  
      // What about this - is it really any different? 
      public static Object likeThis = new Object() {
          @Override
          public String toString() { return "hello!"; }
      };
  }
  </code></pre>
  
  <p>What's going on here?</p>