title: Cannot deserialize array of unknown type using gson w/ java
body: <p>The problem is the data type contained within the array is not known until runtime. I have created a test case to illustrate my problem. Everything works fine until it comes to arrays.</p>
  
  <pre><code>User user1 = new User(1, "one");
  User user2 = new User(2, "two");
  
  User [] users = {user1, user2};
  
  Gson gson = new Gson();
  
  // gson processing array of known a type. WORKS FINE
  // observe use of brackets [] 
  String toJson = gson.toJson(users, User[].class);
  User [] newUsers = gson.fromJson(toJson, User[].class);
  for(User user : newUsers) {
      System.out.println(user.toString());
  }
  
  // gson processing using reflection for single user. WORKS FINE
  final Class&lt;?&gt; userType = Class.forName("com.abc.ws.GsonTest$User");
  User user3 = new User(3, "three");
  toJson = gson.toJson(user3, userType);
  Object newUser = gson.fromJson(toJson, userType);
  System.out.println(newUser.toString());
  
  // gson processing using reflection for array of users. FAILS.
  toJson = gson.toJson(users, WHAT_TO_PASS_HERE?); // it should be something like: userType[].class but that won't compile
  Object newerUsers = gson.fromJson(toJson, WHAT_TO_PASS_HERE?); // it should be something like: userType[].class but that won't compile
  for(User user : newerUsers) {
      System.out.println(user.toString());
  }
  </code></pre>
  
  <p>btw: Below is the complete code.</p>
  
  <pre><code>package com.abc;
  
  
  import com.google.gson.Gson;
  
  
  public class GsonTest {
      public static void main(String[] args) throws Exception {
          GsonTest.go();
  }
  
      public static void go() throws Exception {
          User user1 = new User(1, "one");
          User user2 = new User(2, "two");
  
          User [] users = {user1, user2};
  
          Gson gson = new Gson();
  
          // gson processing array of known a type. Works fine
          // observe use of brackets [] 
          String toJson = gson.toJson(users, User[].class);
          User [] newUsers = gson.fromJson(toJson, User[].class);
          for(User user : newUsers) {
              System.out.println(user.toString());
          }
  
          // gson processing using reflection for single user. Works fine.
          final Class&lt;?&gt; userType = Class.forName("com.abc.GsonTest$User");
          User user3 = new User(3, "three");
          toJson = gson.toJson(user3, userType);
          Object newUser = gson.fromJson(toJson, userType);
          System.out.println(newUser.toString());
  
          // gson processing using reflection for array of users. Fails.
  
          toJson = gson.toJson(users, WHAT_TO_PASS_HERE?); // it should be something like: userType[].class but that won't compile
          Object newerUsers = gson.fromJson(toJson, WHAT_TO_PASS_HERE?); // it should be something like: userType[].class but that won't compile
          for(User user : newerUsers) {
              System.out.println(user.toString());
          }
      }
  
      public static class User {
          private int id;
          private String name;
  
          public User() { }
  
          public User(int id, String name) {
              this.id = id;
              this.name = name;
          }
  
          public int getId() {
              return id;
          }
  
          public void setId(int id) {
              this.id = id;
          }
  
          public String getName() {
              return name;
          }
  
          public void setName(String name) {
              this.name = name;
          }
  
          public String toString() {
              return "id: " + this.id + ", name: " + this.name;
          }
      }
  }
  </code></pre>