import java.lang.reflect.Array;
import java.lang.reflect.Method;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Iterator;
import java.util.List;
/**
该实例提供了一种通用的打印对象的方式
通过private static void print(Object obj),屏蔽所有的对象类型
该实例只提供了一种解决方案,主考虑到 原始类型,对象类型,数组类型和集合类型(Collection)
通过该实例可以做以下扩展: 1.在输出格式上做修改
2.可以扩展Map等类型的输出方式
*/
public class ReflectTest {
public static void main(String... args) throws Exception{
//test:原始类型
int i = 5;
print(i);
//test:数组类型
int[] iArr = new int[3];
print(iArr);
//test:对象类型
String str = "aaabbbccc";
print(str);
//test:多维数组类型
int[][] iArray = new int[2][3];
print(iArray);
//test:简单的集合类型
List<String> list1 = new ArrayList<String>();
list1.add("list1A");
list1.add("list1B");
list1.add("list1C");
print(list1);
List<String> list2 = new ArrayList<String>();
list2.add("list2A");
list2.add("list2B");
list2.add("list2C");
print(list2);
//test:集合中嵌套集合的类型
List<List<String>> list = new ArrayList<List<String>>();
list.add(list1);
list.add(list2);
print(list);
List<int[]> list12 = new ArrayList<int[]>();
//test:集合中嵌套数组的类型
list12.add(iArr);
list12.add(iArr);
print(list12);
}
//打印对象,每一个对象单行显示
private static void print(Object obj){
printObject(obj);
System.out.println();
}
//打印对象,主要分类为:原始类型,对象类型,数组类型,集合类型
private static void printObject(Object obj){
Class clazz = obj.getClass();
/* if(obj instanceof Collection){
Collection c = (Collection)obj;
printCollection(c);
}else */if(clazz.isArray()){
int len = Array.getLength(obj);
for(int i = 0; i<len; i++){
printObject(Array.get(obj,i));
}
}else{
System.out.print(obj);
System.out.print(" ");
}
}
//集合类型
/* private static void printCollection(Collection c){
System.out.print("[");
Iterator it = c.iterator();
while(it.hasNext()){
Object o = it.next();
printObject(o);
}
System.out.print("]");
}*/
}