Java反射–数组
时间:2020-01-09 10:35:19 来源:igfitidea点击:
由于Java中的array也是一个类,因此java.lang.Class中的许多方法也可以与该数组一起使用。除了Java Reflection API中的类之外,还有一个类java.lang.reflect.Array,该类具有用于创建新数组,在运行时获取和设置数组元素的方法。
使用Java Reflection识别数组类型
要确定任何class字段是否为数组类型,可以使用Class.isArray()方法。下面的类用于数组字段的示例目的。
public class Message {
String msg;
private int[] codeArray;
public void displayMessage(){
System.out.println(msg);
}
}
import java.lang.reflect.Field;
public class ReflectionDemo {
public static void main(String[] args) {
try {
// get instance of Class
Class<?> cls = Class.forName("com.theitroad.programs.Message");
Field[] fields = cls.getDeclaredFields();
for (Field f : fields) {
Class<?> type = f.getType();
// Looking for array
if(type.isArray()){
System.out.println("Array found- " + f.getName());
}
}
} catch (IllegalArgumentException | ClassNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
输出:
Array found- codeArray
使用Java Reflection创建新数组
Java Reflection API提供了使用java.lang.reflect.Array.newInstance()方法动态创建任意类型和尺寸的数组的功能。
public class ReflectionDemo {
public static void main(String[] args) {
int[] codesArray = (int[])Array.newInstance(int.class, 5);
System.out.println("Array of length " + codesArray.length + " created.");
}
}
输出:
Array of length 5 created.
使用Java Reflection获取/设置数组元素
为了获取和设置数组的元素,java.lang.reflect.Array中有多个setter和getter,用于不同类型,例如setByte(),setDouble(),getInt(),getFloat()以及通用的get()和set()方法。
set(Object array,int index,Object value)–设置指定数组中给定索引处的传递值。
get(Object array,int index)–返回指定数组对象中分隔索引处的值。
import java.lang.reflect.Array;
public class ReflectionDemo {
public static void main(String[] args) {
int[] codesArray = (int[])Array.newInstance(int.class, 5);
System.out.println("Array of length " + codesArray.length + " created.");
//using set method to set value
Array.set(codesArray, 0, 3);
// Setting values using setInt method
Array.setInt(codesArray, 1, 10);
Array.setInt(codesArray, 2, 4);
// Getting values using getInt and get methods
System.out.println("Value at index 0- " + Array.get(codesArray, 0));
System.out.println("Value at index 1- " + Array.getInt(codesArray, 1));
System.out.println("Value at index 2- " + Array.getInt(codesArray, 2));
}
}
输出:
Array of length 5 created. Value at index 0- 3 Value at index 1- 10 Value at index 2- 4

