zoukankan      html  css  js  c++  java
  • Java中的反射机制(三) 反射与数组

    反射与数组

      

      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://docs.oracle.com/javase/7/docs/api/java/lang/reflect/Array.html

  • 相关阅读:
    Gridview常用操作
    在DataGridView列中嵌入ComboBox(vb.net版)【原创】
    使用net创建Access存储过程
    C博客作业00我的第一篇博客 1911
    C博客作业01分支、顺序结构 1911
    Lazy load image for listview and beging separate thread
    Android Send Email
    MySQL修复表数据
    Insertion and Deletion of Calendar Events
    TechCrunch:移动社交应用开创社交网络新格局
  • 原文地址:https://www.cnblogs.com/mengdd/p/2878124.html
Copyright © 2011-2022 走看看