数组的反射

来源:互联网 发布:拳皇2002画质优化补丁 编辑:程序博客网 时间:2024/06/06 03:37

数组他不是基本类型,他的父类是Object类。可以用如下例子来验证:

int[] a = new int[] {};

System.out.println(a.getClass().getSuperclass());     // 打印出的结果是Object

 

一维数组不管他的数组长度是否相等,他们字节码是相同的。

例如:

int[] a = new int[] {1, 2, 3};

int[] b = new int[] {4, 5, 6, 7};

System.out.println(a.getClass() == b.getClass())        // 打印出true

 

在对数组进行反射时,经常用到两个类:Arrays和Array

Arrays提供了用来操作各种方法

1、 public static <T> List<T> asList(T... a)       //返回数组的列表

2、对各种类型数组的搜索和排序方法

     1、public static void sort(int[] a)                    对int类型的数组,a为要排序的数组

     2、public static void sort(Object[] a)              对一个对象数组排序,a为要排序的数组

Array类提供了动态创建和访问 Java 数组的方法:

1、public static int getLength(Object array)            返回数组对象的长度

2、public static void set(Object array, int index, Object value)        设置数组对象中的指定位置的值

3、public static int getInt(Object array, int index)               以类型的形式获得对象数组的指定位置值

4、public static void setInt(Object array, int index, int i)     在数组对象中的指定位置的设置int类型的值

5、public static Object newInstance(Class<?> componentType, int length)    动态的创建数组

 

newInstance方法的用法如下:

1、创建数组

      Object obj = Array.newInstance(int.class, 4);              //创建一个int类型的长度为4的数组

2、为数组赋值,使用Array.set(Object array, int index, Object value) 方法

     Array.set(obj, 0, 1);             //为下标为零的位置赋值1

这就是动态创建数组

 


 

原创粉丝点击