反射 Method和数组
2012-02-25 23:35 党飞 阅读(340) 评论(0) 收藏 举报---------------------- android培训、java培训、期待与您交流! ----------------------
上一次我介绍了Constructor和Field类,下面再看看Method类:
对象身上的东西都可以用一个类来表示,那么类身上的方法就可以用Method类来表示。
看一个简单的应用:
Method method1=String.class.getMethod("charAt",int.class);
在这里"charAt"是我们要调用的方法的名称,我在这里调用的是String的charAt方法,后边的
int.class是调用方法是传递的参数的类型,这里是int。
得到方法后就该调用了,看下面:
String str1="abc";
method1.invoke(str1,1);
我们要记得,方法的调用一定是针对某个对象来说的,因此上面这个写法相当于
str1.charAt(1);
结果是 b.
了解方法反射后,我们再来看下数组的反射:
对于数组来说,具有相同的类型和纬度就属于同一种类型,我们来看几个例子
int [] a1=new int[3];
int [] a2=new int[4];
int [][]a3=new int[1][2];
String[] a4=new String[3];
System.out.println(a1.getClass()==a2.getClass());
System.out.println(a1.getClass()==a3.getClass());
System.out.println(a1.getClass()==a4.getClass());
结果是:
true,false,false
从结果中可以看出,a1和a2是相等的,其他不相等,由此也可看出,只有类型和位数都相等
的数组才数同种类型。
在操作数组的时候经常会遇到下面的问题:
String a2=new String(){"a","b","c"};
加入我们直接打印数组
得到的结果是[Ljava.lang.String;@186d4c1
很显然这并不是我们想要的结果,我们想看数组里面的东西,怎么半呢,看下面:
System.out.println(Arrays.asList(a1));
这样就能打印出所有的结果。当然不嫌费事,用for循环完全可以实现。
---------------------- android培训、java培训、期待与您交流! ----------------------
浙公网安备 33010602011771号