共计 1666 个字符,预计需要花费 5 分钟才能阅读完成。
1. 什么是 Array
Array 是一个类的简写, 全限定类名是 java.lang.reflect.Array.
2.Array 有什么用
Array 可以代表所有的数组, 可以通过 Array 动态创建与修改里面的元素.
3.Array 使用示例
(1) 创建
使用静态方法 newInstance() 构造 Object 对象. 方法如下:
public static Object newInstance(Class<?> element, int ... length);
第一个参数是代表元素的类, 剩下的参数表示维数, 一个参数表示一维数组, 两个参数表示二维数组 (数组的数组), 参数的值代表维数的长度.
Object intArray = Array.newInstance(int.class,3); //int [3]
Object stringArray = Array.newInstance(String.class,2,3); //String [2][3]
(2) 赋值
赋值使用静态方法 set 即可, 参数为 Array 返回的 Object 对象, 下标与对应的值.
public static void set(Object array,int index,Object value);
public static void setBoolean(Object array,int index,boolean b);
public static void setXxxx(Object array,int index,xxx);
其中最后一个表示对应的基本类型, 第二个为 boolean 类型的示例.
Array.set(intArray,2,3);
Array.set(stringArray,1,new String[]{"123","456"});
(3) 获取值
使用静态方法 get, 参数为 Array 返回的 Object 对象与下标.
public static Object get(Object array,int index);
public static boolean getBoolean(Object array,int index);
public static xxx getXxx(Object array,int index);
最后一个表示对应的基本类型, 第二个为 boolean 类型的示例
System.out.println(Array.get(intArray,2));
System.out.println(Array.get(Array.get(stringArray,1),1));
(4) 强制类型转换
可以通过强制类型转换使 Array 返回的 Object 对象转换为对应的数组.
var castIntArray = (int [])intArray;
var castStringArray = (String [][])stringArray;
这样可以当作一个普通数组使用.
4. 完整代码
import java.lang.reflect.*;
public class test
{public static void main(String[] args) {var intArray = Array.newInstance(int.class, 3);
var stringArray = Array.newInstance(String.class, 2,3);
Array.set(intArray, 2, 3);
Array.set(stringArray, 1, new String[] {"123", "456"});
System.out.println(Array.get(intArray, 2));
System.out.println(Array.get(Array.get(stringArray,1),1));
System.out.println("-------cast-------");
System.out.println(((int[]) intArray)[2]);
System.out.println(((String [][])stringArray)[1][1]);
}
}
5. 运行结果
以下是作者的公众号, 欢迎关注.
正文完