逻辑上看来是行得通的,但java就是不允许这么干,归根结底是跟泛型擦除机制有关。
coll中是存的String类型的数据, T [] arr = (T[])Array.newInstance(Object.class, coll.size()); 这个数组指定的是Object类型。 任何引用类型的数据都可以往arr里存, 由于泛型的擦除机制, Java虚拟机运行时是不知道泛型信息的, 所以在强制转换的时候会抛强制转换异常。
想返回的数组赋给一个String数组,这样可以:T [] arr = (T[])Array.newInstance(String.class, coll.size()); |