Java基础笔记 – 通过反射机制动态创建和访问数组
本文由发表于6年前 | Java基础 | 评论数 2 |  被围观 7,653 views+

java.lang.reflect.Array类提供了动态创建和访问数组元素的各种静态方法。

static Object
newInstance(Class<?> componentType, int... dimensions)
创建一个具有指定的组件类型和维度的新数组。componentType:组件类型,Java中将数组的数组也就是二维数组当做一个组件。

static Object
get(Object array, int index)
返回指定数组对象中索引组件的值。

static void
set(Object array, int index, Object value)
将指定数组对象中索引组件的值设置为指定的新值。

以下是几个Array的实例
调用Array的newInstance()方法创建数组:

一维数组:

Class classType = Class.forName("java.lang.String");
Object array = Array.newInstance(classType, 10);

多维数组:

Class classType = Class.forName("java.lang.String");
int[] dimension = new int[]{10,10,10};
Object array2_3d = Array.newInstance(classType, dimension);
调用Array的get()方法获取数组的值:

一维数组:

System.out.println((String)Array.get(array, 1));

多维数组:

Class classType = Class.forName("java.lang.String");
int[] dimension = new int[]{10,10,10};
Object array2_3d = Array.newInstance(classType, dimension);
//获取三维数组的第一个数组组件array2Obj,是一个二维数组
Object array2Obj_2d = Array.get(array2, 1);
//获取array2Obj_2的第二个数组组件,是一个一维数组
Object array2Obj_1d = Array.get(array2Obj_2d, 2);
调用Array的set()方法设置数组的值:

一维数组:

Array.set(array, 1, "arthinking");

多维数组:

Array.set(array2Obj_1d, 3, "arthinking");
完整代码如下
一维数组,创建一个一维数组并设置第一个元素的值:
Class classType = Class.forName("java.lang.String");
Object array = Array.newInstance(classType, 10);
Array.set(array, 1, "arthinking");
System.out.println((String)Array.get(array, 1));
多维数组,创建一个三维数组并设置元素array[1][2][3]的值:
Class classType = Class.forName("java.lang.String");
int[] dimension = new int[]{10,10,10};
Object array2_3d = Array.newInstance(classType, dimension);
//获取三维数组的第一个数组组件array2Obj,是一个二维数组
Object array2Obj_2d = Array.get(array2_3d, 1);
//获取array2Obj_2的第二个数组组件,是一个一维数组
Object array2Obj_1d = Array.get(array2Obj_2d, 2);
//设置array2Obj_1的第三个元素的值
Array.set(array2Obj_1d, 3, "arthinking");
//从三维数组array2中获取刚才设置的值
System.out.println(((String[][][])array2_3d)[1][2][3]);

//获取array2Obj_2d的组件类型
Class<?> classType2 = array2Obj_2d.getClass().getComponentType();
除了文章中有特别说明,均为IT宅原创文章,转载请以链接形式注明出处。
本文链接:http://www.itzhai.com/java-based-notes-through-reflection-to-dynamically-create-and-access-an-array.html
arthinking Java技术交流群:280755654,入门群:428693174 more
分享到:
 
2011 10/8
文章评论
    2条评论
给我留言

有人回复时邮件通知我
Java基础的相关文章
随机文章 本月热门 热评
1 InvalidMappingException提示Could not parse mapping document错误的解决方法 2011/5/26
2 jQuery插件实现的方法和原理简单说明 2012/8/8
3 Java基础笔记 – static与final关键字及其编写细节提示 2011/10/26
4 Java Web笔记 – Servlet技术介绍 生命周期 核心API 类方法调用顺序 2011/11/10
5 Hibernate继承映射策略之每棵类继承树一张表 2011/5/25
6 jQuery(非HTML5)实现的可编辑表格 2012/7/5
友情推荐 更多
破博客 文官洗碗安天下,武将打怪定乾坤。多么美好的年代,思之令人泪落。
Mr.5's Life 白天是一名程序员,晚上就是个有抱负的探索者
行知-追寻技术之美 关注大数据,分布式系统
我爱编程 编程成长轨迹
Cynthia's Blog 学习笔记 知识总结 思考感悟
 
猜您喜欢
欢迎关注我的公众号 IT宅
关于IT宅 文章归档

IT宅中的文章除了标题注明转载或有特别说明的文章,均为IT宅的技术知识总结,学习笔记或随笔。如果喜欢,请使用文章下面提供的分享组件。转载请注明出处并加入文章的原链接。 感谢大家的支持。

联系我们:admin@itzhai.com

Theme by arthinking. Copyright © 2011-2015 IT宅.com 保留所有权利.