如何编写Java函数以返回动态类型的数组?

车丹

我有一种情况,我想获取一个对象数组,无论对象是什么类型。

下面是我尝试的:

调用函数的代码:

wsDeployedExaminersResponseVO.setDeployedExaminers((DeployedExaminersVO[]) returnArrayForType(wsDeployedExaminersVO));

功能代码:

 public static Object[] returnArrayForType(Object type) throws Exception {
   Object[] objects={type};
   return objects;
 }

但是,当我运行代码时,在调用代码的那一刻,我得到了Exception。之所以这样做,是因为我试图自动生成Java代码,并且需要一个函数,该函数将返回参数类型的数组或一个可以根据以下条件动态地适合set函数的线性代码:运行时的类型。

徐院长:

两个问题:

  1. 你有几件?
  2. 您需要对象的实际类型还是超类型?

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] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章