您的位置:首页 > 编程语言 > Java开发

Java获取数组组件类型及Array API简单示例

2017-11-01 17:07 323 查看

Java获取数组组件类型及Array API简单示例

最近写一个转换工具,用到了获取数组组件类型的API以及Array的API,这里记录一笔。

一、关键API

Class<?>

Class.getComponentType();// 获取组件类型

Array

Array.newInstance(Class<?> componentType, int length);// 创建一个数组实例


二、代码示例

import java.lang.reflect.Array;
import java.lang.reflect.Field;
import java.util.Arrays;

public class ArrayTest {

public static void main(String[] args) throws Exception {
String[] arrayStr = new String[0];
/**
* 获取数组变量的组件类型
*/
System.out.println(getComponentType(arrayStr.getClass()));// class java.lang.String
/**
* 获取数组属性的组件类型
*/
// 获取array属性对象
Field arrayField = Entity.class.getDeclaredField("array");
Class<?> componentType = getComponentType(arrayField.getType());
System.out.println(componentType);// int
/**
* 根据获取到的组件类型,创建一个array对象并赋值
*/
// 创建一个长度等于2的数组
Object array = Array.newInstance(componentType, 2);
// 赋值
Array.set(array, 0, 1);
Array.set(array, 1, 2);
System.out.println(Array.get(array, 1));// 1
/**
* 创建一个Entity对象,把上面通过Array.newInstance创建的数组对象填充到array属性上
*/
Entity e = new Entity();
arrayField.setAccessible(true);
arrayField.set(e, array);
System.out.println(e);// Entity [array=[1, 2]]
}

public static Class<?> getComponentType(Class<?> arrayClass) {
return arrayClass.getComponentType();
}

}
class Entity {
private Integer[] array;

public Integer[] getArray() {
return array;
}

public void setArray(Integer[] array) {
this.array = array;
}

@Override
public String toString() {
return "Entity [array=" + Arrays.toString(array) + "]";
}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  java api