我想尝试下面的课程:
public class FooService {
  private Client client;
  public Foo get(Long id) {
    return client.get(id, Foo.class);
  }
  public List<Foo> query() {
    return Arrays.asList(client.get(Foo[].class));
  }
}
一切都没问题,除了Foo[].class:
public abstract class BaseService<T, I> {
  private Client client;
  private Class<T> type;
  public BaseService(Class<T> type) {
    this.type = type;
  }
  public T get(I id) {
    return client.get(id, type);
  }
  public List<T> query() {
    return Arrays.asList(client.get(/* What to pass here? */));
  }
如何Foo[].class在不传递构造函数的情况下解决此问题,就像我一样Foo.class?
Java 缺乏直接从元素类获取数组类的工具。常见的解决方法是从零长度数组中获取类:
private Class<T> type;
private Class arrType;
public BaseService(Class<T> type) {
    this.type = type;
    arrType = Array.newInstance(type, 0).getClass();
}
您现在可以传递arrType给该client.get(...)方法。