title: @class getting added even though it's the defaultImpl
body: <p>Using Jackson (the JSON/Object mapper), let's say I have the following interface and classes:</p>
  
  <pre><code>@JsonTypeInfo(defaultImpl = Duck.class, use = JsonTypeInfo.Id.CLASS)
  public interface Animal {
  }
  
  public class Duck implements Animal {
      private String name;
      public String getName() { return name; }
      public void setName(String name) { this.name = name; }
  }
  
  public class Park {
      private Animal animal;
      public Animal getAnimal() { return animal; }
      public void setAnimal(Animal animal) { this.animal = animal; }
  }
  </code></pre>
  
  <p>And I try to read (deserialize) this piece of JSON:</p>
  
  <pre><code>{
      "animal": {
          "name": "Quacky"
      }
  }
  </code></pre>
  
  <p>using:</p>
  
  <pre><code>Park park = objectMapper.readValue(json, Park.class);
  </code></pre>
  
  <p>It works! Even without any type information (@class or @type) it is able to construct the <code>Duck</code> because I specified a <code>defaultImpl</code> for the <code>Animal</code> interface.</p>
  
  <p>Now I expect the same behaviour when doing it the other way around.</p>
  
  <pre><code>String json = objectMapper.writeValueAsString(park);
  </code></pre>
  
  <p>But instead I get this JSON:</p>
  
  <pre><code>{
      "animal": {
          "@class": "com.example.Duck",
          "name": "Quacky"
      }
  }
  </code></pre>
  
  <p>It does not seem to respect the <code>defaultImpl</code> when serializing! I want the "@class" attribute gone from the output file. Does anyone have any idea of how I can tell Jackson not to add the "@class" attribute for my <code>Duck</code>?</p>