数组的反射使用实例

来源:互联网 发布:百事通酒店软件代理 编辑:程序博客网 时间:2024/05/26 17:43
package com.franky.reflex;import java.lang.reflect.Array;import java.util.Arrays;/** * @描述 数组的反射 * @作者 franky * @日期 2014-12-30 下午5:16:41 */public class ArraysReflex {/** * @param args */public static void main(String[] args) {int[] a1 = new int[2];int[] a2 = new int[3];int[] a3 = new int[]{1,2,3};String[] b1 = new String[]{"hello","java","ok"};//同维度,保护类型相同的数组的Class对象都是一个System.out.println(a1.getClass() == a2.getClass());//结果为:trueSystem.out.println(a1.getClass().getSuperclass().getName());//结果为: java.lang.Object//因为int数组内的元素不是Object,所以根据JDK1.4无法打印出内部元素//只能根据JDK1.5打印出相应结果System.out.println(a3);//结果为:[I@3020ad]System.out.println(Arrays.asList(a3));//结果为:[[I@3020ad]System.out.println(Arrays.asList(b1));//结果为:[hello, java, ok]//打印b1 String数组 print(b1);String b2 = "noarray";//打印b2print(b2);//得到数组内部元素的类型Object[] obj = new Object[]{"abc",1};for (int i = 0; i < obj.length; i++) {String name = obj[i].getClass().getName();System.out.println(name);}}/** * @param obj 传入的对象 如果是数组循环打印,如果不是默认打印 */public static void print(Object obj){if(obj.getClass().isArray()){int len = Array.getLength(obj);for(int i=0;i<len;i++){System.out.println(Array.get(obj, i));}}else{System.out.println(obj);}}}

0 0
原创粉丝点击