import java.util.Arrays;/** * Created by kifile on 8/30/14. */ public class ObjectArray { public static void main(String[] args) { Integer[] integers = {new Integer(100), new Integer(200), new Integer(300)}; System.out.println(Arrays.toString(integers)); } }不明白你为什么要使用一个Object[] 作为数组类型,而且只有List在作为数组使用泛型的时候会出现类型消除的情况啊
这是为了实现 T[] ts = new T[100];
这是为了实现 T[] ts = new T[100]; 能说具体需求吗?因为只说一个实现T[] ts = new T[100];根本不知道有什么意义
public static void main(String[] args) throws Exception { Object[] array = { 1, 2, 3, 4, 5 }; Integer[] num_arr = convert(array, Integer.class); System.out.println(Arrays.toString(num_arr)); } @SuppressWarnings("unchecked") public static <T> T[] convert(Object[] o, Class<T> clzz) { T[] result = (T[]) Array.newInstance(clzz, o.length); for (int i = 0; i < o.length; i++) { Object e = o[i]; if (e != null && !clzz.isAssignableFrom(e.getClass())) { throw new ClassCastException(e.getClass().getName() + " cannot be cast to " + clzz.getName()); } result[i] = (T) e; } return result; }
@SuppressWarnings("unchecked") public static <T> T[] convert(Object o, Class<T> clzz) { int len = Array.getLength(o);
T[] result = (T[]) Array.newInstance(clzz, len); for (int i = 0; i < len; i++) { Object e = Array.get(o, i); if (e != null && !clzz.isAssignableFrom(e.getClass())) { throw new ClassCastException(e.getClass().getName() + " cannot be cast to " + clzz.getName()); } result[i] = (T) e; } return result; }
* Created by kifile on 8/30/14.
*/
public class ObjectArray { public static void main(String[] args) {
Integer[] integers = {new Integer(100), new Integer(200), new Integer(300)};
System.out.println(Arrays.toString(integers));
}
}不明白你为什么要使用一个Object[] 作为数组类型,而且只有List在作为数组使用泛型的时候会出现类型消除的情况啊
T[] ts = new T[100];
T[] ts = new T[100];
能说具体需求吗?因为只说一个实现T[] ts = new T[100];根本不知道有什么意义
T[] ts = new T[100];
能说具体需求吗?因为只说一个实现T[] ts = new T[100];根本不知道有什么意义
泛型数组的实现
<T1, T2> T2[] convert(T1[] t1s, Function<T1, T2> converter)
{
return ?
}
除非你在运行时能够知道T2是什么类型,否则无法实现你要的功能
然而运行时知道T2可能也不是那么简单,所以你应该用List之类的东西,为什么一定要用数组?
除非你在运行时能够知道T2是什么类型,否则无法实现你要的功能
然而运行时知道T2可能也不是那么简单,所以你应该用List之类的东西,为什么一定要用数组?
因为这是ArrayUtil,list的我会在CollectionUtil里写。
有什么曲线实现的方法吗?
Object[] array = { 1, 2, 3, 4, 5 };
Integer[] num_arr = convert(array, Integer.class); System.out.println(Arrays.toString(num_arr));
} @SuppressWarnings("unchecked")
public static <T> T[] convert(Object[] o, Class<T> clzz) {
T[] result = (T[]) Array.newInstance(clzz, o.length);
for (int i = 0; i < o.length; i++) {
Object e = o[i];
if (e != null && !clzz.isAssignableFrom(e.getClass())) {
throw new ClassCastException(e.getClass().getName() + " cannot be cast to " + clzz.getName());
}
result[i] = (T) e;
}
return result;
}
public static <T> T[] convert(Object o, Class<T> clzz) {
int len = Array.getLength(o);
T[] result = (T[]) Array.newInstance(clzz, len);
for (int i = 0; i < len; i++) {
Object e = Array.get(o, i);
if (e != null && !clzz.isAssignableFrom(e.getClass())) {
throw new ClassCastException(e.getClass().getName() + " cannot be cast to " + clzz.getName());
}
result[i] = (T) e;
}
return result;
}