`

反射中的数组

 
阅读更多

首先,拿到一个Class,可以通过如下方式来判断是否是一个数组类型:

Class<?> c = f.getType();
if(c.isArray()){
   ...
}
可以通过:

c.getComponentType()
来获取到数组元素的类型。


然后,可以通过下面的方式来创建一个数组:

Object o = Array.newInstance(c, n);

添加数组元素到数组中:

val = ...//构建数组元素 
Array.set(o, i, val);

下面的oo就是最后的结果了:

Object[] oo = (Object[])o;

参考:

http://docs.oracle.com/javase/tutorial/reflect/special/arrayComponents.html

http://docs.oracle.com/javase/tutorial/reflect/special/arrayInstance.html


分享到:
评论

相关推荐

    java 反射中操作数组

    这个`Class`对象包含了关于数组类型的所有信息,包括它的组件类型(component type),即数组中的元素类型。 接下来,我们可以使用`Array.newInstance()`方法创建一个新的数组对象,指定数组的类型和长度。例如,`...

    java反射全解(反射原理+反射API详解+反射与数组+反射与泛型+反射源码与性能开销+反射优缺点+反射与内省)

    反射与数组是指在反射机制中如何操作数组。数组是 Java 语言中的一种基本数据结构,反射机制可以动态地获取数组的信息和调用数组的方法。 反射与泛型是指在反射机制中如何操作泛型。泛型是 Java 语言中的一种类型...

    深入反射生成数组的详解

    在反射中,初始化多维数组时,需要调用特定的构造函数,而不是“Set”方法。同时,访问多维数组的元素时,`GetValue`和`SetValue`方法需要接受额外的参数来指示每个维度的索引。 总的来说,反射生成数组并进行操作...

    利用反射实现的数组增长的小程序

    学习反射的时候学到的一点东东。 ­ 用到的知识点: java.lang.reflect.Array ­ List 集合 内部的实现就是这样的。如果下面的新数组的长度增长原来的一倍,就是Vector集合了。

    详解java中反射机制(含数组参数)

    Java 中的反射机制(含数组参数) Java 中的反射机制是一种强大的工具,可以在运行时获取类的内部信息,包括modifiers、superclass、interfaces、fields 和 methods 的所有信息,并可以在运行时改变 fields 的内容...

    Java技术对接收数组参数的成员方法进行反射

    4. 准备参数:将值放入数组中,可以使用`Array.set()`方法为数组的每个元素设置值。 5. 调用方法:使用`Method`对象的`invoke()`方法,传入目标对象(如果方法是静态的,则为null)和参数。参数应该是实际要传递给...

    java反射机制学习(四):通过反射执行方法、操作属性、操作数组中的数据

    在本篇讲解中,我们将深入理解如何通过反射来执行方法、操作属性以及处理数组中的数据。 首先,我们从`InvokeMethodDemo01.java`开始,这个示例通常用于演示如何通过反射来调用类的方法。在Java中,`java.lang....

    p波、sv波Zoeppritz方程.zip_P波_p反射系数_zoeppritz_入射波 反射波_反射系数

    在地震勘探领域,P波(纵波)和SV波(剪切波)是两种重要的地震波类型,它们在地壳中传播时与岩石界面相互作用,产生反射和透射现象。Zoeppritz方程是描述这些波在介质界面反射和折射行为的关键数学工具。本压缩包...

    实例讲解Java编程中数组反射的使用方法

    在这个例子中,`printArray`方法接受一个`Object`类型的参数,通过反射获取数组元素的类型,并遍历数组,打印出每个元素的值。`primitiveToDisplayString`方法用于将基本类型的值转换为可读的字符串。 总的来说,...

    C# 维数组转换为DataTable 的三个方法

    - 使用反射获取每个数组中的值,并填入新创建的行。 - 将新创建的行添加到 `DataTable` 中。 5. 返回填充后的 `DataTable`。 ### 总结 以上介绍了三种不同的方法,用于将 C# 中的维数组转换为 `DataTable`。这些...

    java反射知识点

    5.反射数组 6.通过反射配置文件内容 7.通过反射越过泛型检查 8.其他一些文本笔记 读者需要补充的知识点我来说一下,补充: 1.反射数组应用 2.反射main方法 3.反射代理(设计模式) 4.反射数据库操作 5.反射框架 6....

    java反射-英文版反射规范

    - 可以创建一维或多维数组,并通过反射获取数组的长度和元素。 ##### 2. **修饰符类** - 通过反射可以获取到字段、方法或构造器的访问权限修饰符。 - 这些信息对于理解和操作类成员非常重要。 #### 五、原始...

    把实体类数组转换为DataTable C#

    5. 将实体数组转换为DataTable:最后,遍历实体数组并将每个实体的属性值填充到DataTable的新行中: ```csharp foreach (var entity in entities) { var row = dataTable.NewRow(); foreach (var property in ...

    Java反射机制2

    在“Java反射机制2”这个主题中,我们将深入探讨数组与Object的关系、成员方法的反射、成员变量的反射以及数组的反射应用。 1. 数组与Object的关系及其反射类型: 在Java中,所有数组都继承自Object类,这意味着...

    实例185 - 自定义泛型化数组类

    这样的设计确保了类型安全,因为我们只能向数组中添加与泛型类型一致的元素。 然而,需要注意的是,由于Java的类型擦除,上述代码中的`array = (T[]) new Object[size];`实际上是一个潜在的类型转换异常风险。在...

    C#将对象数组转换成DataSet使用案例 c#经典案例.pdf

    利用反射,我们可以获取对象数组中对象的每个属性,包括其名称、类型,然后利用这些信息来创建DataSet中的数据表的Schema。当创建完成以后,将对象数组的每个对象的属性数据复制到刚才创建的数据表中,这样就很简单...

    goa3D.rar_3D蒙特卡洛_matlab光线追迹_光线反射_反射_蒙特卡洛反射

    6. **输出与显示**:最后,程序会将计算得到的像素颜色数组转化为图像,并在MATLAB环境中显示或保存为文件。 通过理解和分析"goa3D.m"的源代码,我们可以更深入地学习光线追迹的实现细节,如如何构建场景几何,如何...

    java源程序 课件 常用类 抽象类与接口 图形用户界面 多线程反射 泛型 时间日期类 数组 异常处理 字符串类与正则表达

    java源程序 课件 常用类 抽象类与接口 图形用户界面 多线程反射 泛型 时间日期类 数组 异常处理 字符串类与正则表达等相关知识的ppt课件和源程序代码,是初学者的帮手,包含了Java所需的所有知识点。。。。

    光纤Bragg光栅反射谱

    下面将详细解释FBG的工作原理、反射谱的计算及其在MATLAB中的模拟。 **FBG的工作原理** 光纤Bragg光栅是由周期性变化的折射率形成的,这个周期性结构会使得特定波长的光发生干涉,导致反射。这个反射波长通常称为...

Global site tag (gtag.js) - Google Analytics