反射による配列の操作

1403 ワード

import java.lang.reflect.Array;

public class TestArray {
	public static void main(String[] args) {
		String [] strs = new String[]{"c","p","x"};
		//       ,             Class
		Class<?> st = strs.getClass().getComponentType();
		//         
		System.out.println("    :"+st.getName());
		//     
		System.out.println("     :"+Array.getLength(strs));
		//         
		System.out.println(Array.get(strs, 2));
		//             
		Array.set(strs, 2, "xx");
		System.out.println(Array.get(strs, 2));
		System.out.println("------------------------");
		
		//      
		int [] ints = new int[]{1,2,3};
		Class<?> intarray = ints.getClass().getComponentType();
		//   intarray      ,         
		int[] newArray = (int[]) Array.newInstance(intarray,5);
		/*
		 *   copy,         ,           
		 *    copy,          ,              ,
		 *          
		 */
		System.arraycopy(ints, 0, newArray, 0,Array.getLength(ints));
		Class<?> newints = newArray.getClass().getComponentType();
		//     
		int length = Array.getLength(newArray);
		for(int i =0;i<length;i++){
			System.out.println(Array.get(newArray, i));
		}
	}
	
}