为什么需要使用Java Reflection创建数组元素

安德鲁·奇

有人会这样写代码:

int[] intArray = (int[]) Array.newInstance(int.class, 3);
Array.set(intArray, 0, 123);
Array.set(intArray, 1, 456);
Array.set(intArray, 2, 789);
System.out.println("intArray[0] = " + Array.get(intArray, 0));
System.out.println("intArray[1] = " + Array.get(intArray, 1));
System.out.println("intArray[2] = " + Array.get(intArray, 2));

我想问为什么我需要像这样修改一个数组而不是:

intArray [0] = 123;

intArray [1] = 456;

intArray [2] = 789;

马克·托波尼克(Marko Topolnik)

您提供的代码背后没有动机,所有这些都可以由本机数组语法代替。Array类只对阵列的一个通用处理其组件类型是在编译时未知的是有用的。

一个简单的示例可能是解析某些有线格式,其中您可能具有诸如以下的辅助方法:

public Object toArray(Class<?> componentType, int size, Parser p) {
   Object array = Array.newInstance(componentType, size);
   for (int i = 0; i < size; i++) 
      Arrays.set(array, i, p.nextItem());
   return array;
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

既然已经声明了类,为什么还需要使用元素?

在目标c中,创建对象时,为什么需要使用*?

将通用列表转换为数组。为什么需要使用克隆?

为什么要使用zsh数组参数?

为什么单个指针的行为就像数组,为什么不需要使用引用操作符(*)来访问指向的元素?

当我想在Python / Pandas中获取字符串列表的元素时,为什么需要使用.str?

盖茨比:为什么我(或什至什至?)需要使用exports.onCreateNode来创建页面?

为什么我们需要使用双指针来访问二维数组?

Java和mySQL,为什么要使用数据库中的数据创建类对象?

为什么要使用伪元素来分隔块元素?

为什么要使用`&myArray [i]`这样的数组元素的地址?二维数组

为什么要使用数组类型而不是标准数组?

为什么要使用二维结构数组?

为什么要使用迭代器而不是数组索引?

当数组更快时,为什么要使用列表?

为什么要使用地图制作新数组

从实例存储EC2创建AMI时,为什么需要使用-e exclude?--nofilter不应用于保留凭据吗?

将 List 添加到嵌套 List 时,为什么需要使用构造函数来创建新的 List 实例,而不是仅添加现有的 List?

为什么需要多次创建数组?

在向量中创建的新数组是否需要使用delete?

我需要使用php创建和排序新数组

为什么我需要使用chroot

为什么我需要使用strdup()?

为什么需要使用minitest / autorun?

什么时候需要使用$ scope。$来使用Angular处理对象/数组?

为什么Java中的某些方法不需要创建实例即可使用?

如果在创建数组时定义了NumPy数组的元素,为什么Cython需要更多的Python调用?

Java 多维数组 - 如何从常规数组元素创建多维数组

使用多维数组创建输入元素