通过java反射机制,可以更加深入的控制程序的运行过程,可以逆向控制程序的执行过程;而这种功能是通过反射对象的构造函数、方法、成员实现的:
示例:
使用反射扩展数组的长度。
代码:
- /*
- * 通过反射实现扩张数组长度的方法
- */
- package unit16;
- import java.lang.reflect.*;
- public class ReFlexTest2 {
- public static void main(String[] args) {
- Test test = new Test();
- test.print();
- test.is = (int[]) addArrayLength(test.is, 10);
- test.ss = (String[]) addArrayLength(test.ss, 10);
- test.print();
- }
- public static Object addArrayLength(Object array, int newLength) {
- Object newArray = null;
- Class componentType = array.getClass().getComponentType();//创建反射对象
- newArray = Array.newInstance(componentType, newLength);//使用指定参数创建一个该类对象
- System.arraycopy(array, 0, newArray, 0, Array.getLength(array));//通过替换,生成新数组
- return newArray;
- }
- }
- class Test {
- public int[] is = { 1, 2, 3 };
- public String[] ss = { "A", "B", "C" };
- public void print() {//遍历数组
- for (int index = 0; index < is.length; index++) {
- System.out.println("is[" + index + "]=" + is[index]);
- }
- System.out.println();
- for (int index = 0; index < ss.length; index++) {
- System.out.println("ss[" + index + "]=" + ss[index]);
- }
- System.out.println();
- }
- }
复制代码
|
|