title: Issue with parse json to java object using gson
body: <p>I want to parse json data into java object using <a href="http://code.google.com/p/google-gson/" rel="noreferrer">google-gson</a>. </p>
  
  <p>Here is an example of the data I want to parse:</p>
  
  <pre><code>  {"isBean":{"userName":"test","password":"password112"}}
  </code></pre>
  
  <p><strong>IsBean.java</strong></p>
  
  <pre><code>public interface IsBean extends Serializable,IsSerializable{
  
      long getId();
  
  }
  </code></pre>
  
  <p><strong>User.java</strong></p>
  
  <pre><code>public class User implements IsBean,IsSerializable,Serializable {
  
      String userName;
      String password;
  
      public String getUserName() {
          return userName;
      }
      public void setUserName(String userName) {
          this.userName = userName;
      }
      public String getPassword() {
          return password;
      }
      public void setPassword(String password) {
          this.password = password;
      }
      @Override
      public long getId() {
          return 0;
      }
  
  
  }
  </code></pre>
  
  <p><strong>RequestObj.java</strong></p>
  
  <pre><code>public class RequestObj implements IsBean, Serializable,IsSerializable{
  
      IsBean  isBean;
      @Override
      public long getId() {
          return 0;
      }
       public IsBean getIsBean() {
          return isBean;
      }
      public void setIsBean(IsBean isBean) {
          this.isBean = isBean;
      }
  }
  </code></pre>
  
  <p><strong>Test.java</strong></p>
  
  <pre><code>public class Test {
  
      public static void main(String[] args) {
          Gson gson = new Gson();
          User user=new User();
          user.setPassword("password112");
          user.setUserName("test");
          RequestObj requestObj=new RequestObj();
          requestObj.setIsBean(user);
          String jsonStr=gson.toJson(requestObj);
          System.out.println("jsonStr---&gt;"+jsonStr);
          try{
              RequestObj request=gson.fromJson(jsonStr, RequestObj.class);
          }catch (Exception e) {
          e.printStackTrace();
          }
      }
  }
  </code></pre>
  
  <p><strong>Error:</strong></p>
  
  <pre><code>java.lang.RuntimeException: Unable to invoke no-args constructor for interface com.test.gson.shared.IsBean. Register an InstanceCreator with Gson for this type may fix this problem.
      at com.google.gson.internal.ConstructorConstructor$8.construct(ConstructorConstructor.java:167)
      at com.google.gson.internal.bind.ReflectiveTypeAdapterFactory$Adapter.read(ReflectiveTypeAdapterFactory.java:162)
      at com.google.gson.internal.bind.ReflectiveTypeAdapterFactory$1.read(ReflectiveTypeAdapterFactory.java:93)
      at com.google.gson.internal.bind.ReflectiveTypeAdapterFactory$Adapter.read(ReflectiveTypeAdapterFactory.java:172)
      at com.google.gson.Gson.fromJson(Gson.java:795)
      at com.google.gson.Gson.fromJson(Gson.java:761)
      at com.google.gson.Gson.fromJson(Gson.java:710)
      at com.google.gson.Gson.fromJson(Gson.java:682)
      at com.test.gson.server.Test.main(Test.java:18)
  Caused by: java.lang.reflect.InvocationTargetException
      at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
      at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
      at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
      at java.lang.reflect.Method.invoke(Method.java:597)
      at com.google.gson.internal.UnsafeAllocator$1.newInstance(UnsafeAllocator.java:48)
      at com.google.gson.internal.ConstructorConstructor$8.construct(ConstructorConstructor.java:164)
      ... 8 more
  Caused by: java.lang.InstantiationException: com.test.gson.shared.IsBean
      at sun.misc.Unsafe.allocateInstance(Native Method)
      ... 14 more
  </code></pre>