title: Deserialize nested class using yamlbeans
body: <p>I'm using yamlbeans to deserialize yaml files into Java objects.  This works fine as long as I only have one class.  The problem is when I want to nest a field, I am forced to specify the nested class in the yaml description.  </p>
  
  <p>Single class example:</p>
  
  <p>Java:</p>
  
  <pre><code>public class MessageField {
      public String name;
      public String type;
      public int length;
      public String comment;
  }
  </code></pre>
  
  <p>yaml:</p>
  
  <pre><code>name: field1
  type: int
  length: 4
  comment: first field
  ---
  name: field2
  type: string
  length: 16
  comment: second field
  ---
  </code></pre>
  
  <p>Multiple classes (requires !com.mylib.VariableField in yaml file)</p>
  
  <p>Java:</p>
  
  <pre><code>public class MessageField {
      public String name;
      public String type;
      public int length;
      public String comment;
      public List&lt;VariableField&gt; variableFields;
  }
  public class VariableField extends MessageField{
      public int id;
  }
  </code></pre>
  
  <p>yaml:</p>
  
  <pre><code>name: field3
  type: short
  length: 2
  comment:
  variableFields:
    - !com.mylib.VariableField
      id: 1
      name: nestedField 1
      type: string
      length: -1
      comment:
  ---
  </code></pre>
  
  <p>The yaml documentation page describes how to deserialize a class by specifying the type when reading the class, which is what I do for my top level class:</p>
  
  <pre><code>YamlReader reader = new YamlReader(new FileReader("sample.yml"));
  MessageField mf = reader.read(MessageField.class);
  </code></pre>
  
  <p>This correctly parses my fields for the top level class, but does not allow me to avoid the !com.mylib.VariableField identifier for my nested class.  I'm trying to figure out if there is any way to change the Java code so that the yaml files are not required to know the class name.</p>