我有一种情况,我想获取一个对象数组,无论对象是什么类型。
下面是我尝试的:
调用函数的代码:
wsDeployedExaminersResponseVO.setDeployedExaminers((DeployedExaminersVO[]) returnArrayForType(wsDeployedExaminersVO));
功能代码:
public static Object[] returnArrayForType(Object type) throws Exception {
Object[] objects={type};
return objects;
}
但是,当我运行代码时,在调用代码的那一刻,我得到了Exception。之所以这样做,是因为我试图自动生成Java代码,并且需要一个函数,该函数将返回参数类型的数组或一个可以根据以下条件动态地适合set函数的线性代码:运行时的类型。
两个问题:
解
1,仅1个实例
@SuppressWarnings("unchecked")
public static <T> T[] getArray(T value) {
Object array = Array.newInstance(value.getClass(), 1);
Array.set(array, 0, value);
return (T[]) array;
}
2,用于多个对象
@SuppressWarnings("unchecked")
public static <T> T[] getArray(T... value) {
return value;
}
3,对于显式
3.1对于1个实例
@SuppressWarnings("unchecked")
public static <T> T[] getArray(Class<T> clz, Object value) {
Object array = Array.newInstance(clz, 1);
Array.set(array, 0, value);
return (T[]) array;
}
3.2对于多个实例
@SuppressWarnings("unchecked")
public static <T> T[] getArray(Class<T> clz, Object... values) {
Object array = Array.newInstance(clz, values.length);
System.arraycopy(values, 0, clz, 0, values.length);
return (T[]) array;
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句