代码1: public static <T> T[] subArray(T[] args, int start, int end) {
T[] temp = (T[]) Array.newInstance(String.class, end - start + 1);
for (int i = start; i <= end; i++) {
temp[i - start] = args[i];
}
return temp;
}代码2: public static <T> T[] subArray(T[] args, int start, int end) {
T[] temp = (T[]) Array.newInstance(args[0].getClass(), end - start + 1);
for (int i = start; i <= end; i++) {
temp[i - start] = args[i];
}
return temp;
}代码3: public static <T> T[] subArray(Class<T> c,T[] args, int start, int end) {
T[] temp = (T[]) Array.newInstance(c, end - start + 1);
for (int i = start; i <= end; i++) {
temp[i - start] = args[i];
}
return temp;
}
这三段代码都是实现的一个功能,就是截数组.有个问题就是,怎么样才能在不传Class<T>的情况下保证方法正确,而我又不想用args[0].getClass()...代码1假定传入的数组是String数组.

解决方案 »

  1.   

    假设传入的是String数组,T就是String,怎么在方法里获取String的实例,或是String.class...最终是想获取T的数组.这个是静态方法,没法getClass()...网上的getGenericSuperclass()方法行不通~
      

  2.   

    NND..结贴~...有疑问的去http://blog.csdn.net/loocao/archive/2010/05/07/5567065.aspx 查看答案~
      

  3.   

    假设传入的是String数组,T就是String,怎么在方法里获取String的实例,或是String.class...最终是想获取T的数组.这个是静态方法,没法getClass()...网上的getGenericSuperclass()方法行不通~
      

  4.   

    顶一下。另外,在获取了componentType()并newInstance获取了T[]之后,建议使用System.arraycopy()方法
      

  5.   

    多谢...
    了解System.arraycopy():
    http://doc.java.sun.com/DocWeb/api/java.lang.System?lang=zh_cn&mode=Read#T3