博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Java中的反射机制(三) 反射与数组
阅读量:7109 次
发布时间:2019-06-28

本文共 2078 字,大约阅读时间需要 6 分钟。

反射与数组

  

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

  例程ArrayTester1类的main()方法创建了一个长度为10的字符串数组,接着把索引位置为5的元素设为“hello”,然后再读取索引位置为5的元素的值。

  

import java.lang.reflect.Array;public class ArrayTester1{    public static void main(String[] args) throws Exception    {        Class
classType = Class.forName("java.lang.String"); //生成数组,指定元素类型和数组长度 Object array = Array.newInstance(classType, 10); Array.set(array, 5, "hello"); String str = (String)Array.get(array, 5); System.out.println(str); }}

 

 

多维数组

      首先,区别一下下面两者:

 

  System.out.println(Integer.TYPE);   System.out.println(Integer.class);

 

  输出:

  int

  class java.lang.Integer

 

  一个多维数组的程序实例:

  

import java.lang.reflect.Array;public class ArrayTester2{    public static void main(String[] args)    {        int[] dims = new int[] { 5, 10, 15 };        // 注意区分下面两种        System.out.println(Integer.TYPE);    // int        System.out.println(Integer.class);    // Integer        // 创建一个三维数组,这个数组的三个维度分别是5,10,15        Object array = Array.newInstance(Integer.TYPE, dims);        // 可变参数,也可以这样写:        // Object array = Array.newInstance(Integer.TYPE, 5,10,15);        System.out.println(array instanceof int[][][]);                Class
classType0 = array.getClass().getComponentType(); // 返回数组元素类型 System.out.println(classType0); // 三维数组的元素为二维数组,输出:class [[I // 获得第一层的索引为3的数组,返回的是一个二维数组 Object arrayObject = Array.get(array, 3); Class
classType = arrayObject.getClass().getComponentType(); // 返回数组元素类型 System.out.println(classType); // 二维数组的元素为一维数组,输出:class [I // 此处返回的是一个一维数组 arrayObject = Array.get(arrayObject, 5); Class
classType2 = arrayObject.getClass().getComponentType(); // 返回数组元素类型 System.out.println(classType2); // 一维数组的元素为int // 给一维数组下标为10的位置设置值为37 Array.setInt(arrayObject, 10, 37); int[][][] arrayCast = (int[][][]) array; System.out.println(arrayCast[3][5][10]); }}

 

参考资料

  张龙老师Java SE教学视频。

  文档链接:

  Array:

  

转载地址:http://sdlhl.baihongyu.com/

你可能感兴趣的文章
[裴礼文数学分析中的典型问题与方法习题参考解答]4.4.7
查看>>
JAVA存取对象属性时,如果开程多线程,记得对相关存取方法作原子化操作定义...
查看>>
深度学习 vs. 概率图模型 vs. 逻辑学
查看>>
Eclipse中使用javap运行配置详解
查看>>
DHCP租约时间工作原理
查看>>
Qt移动应用开发(六):QML与C++互动
查看>>
svn代码统计工具的金额
查看>>
2015第32周三
查看>>
Codeforces 56D Changing a String 编辑距离 记忆dp
查看>>
Scala 深入浅出实战经典 第62讲:Scala中上下文界定内幕中的隐式参数实战详解...
查看>>
Android应用Design Support Library完全使用实例
查看>>
中通打印助手-实现快递面单快速打印(免费使用)
查看>>
付款页面DEMO
查看>>
Swift - 使用Core Data进行数据持久化存储
查看>>
[转载]服务器和应用系统迁移方案
查看>>
类的专有方法(__init__)
查看>>
open()系统调用的实现
查看>>
java历史集合类对比
查看>>
Java实现字符全阵列阵列
查看>>
媒体类型和字符集
查看>>