黑马程序员技术交流社区
标题:
解决张孝祥老师高新技术通过反射无法直接获取数组类型
[打印本页]
作者:
fjl_fight
时间:
2013-5-13 01:00
标题:
解决张孝祥老师高新技术通过反射无法直接获取数组类型
本帖最后由 fjl_fight 于 2013-5-13 01:18 编辑
在很久以前看了张孝祥老师的数组反射视频后,
张老师说没有找到什么办法通过反射直接找出数组类型的方法
,今天无意间在API中看到了解决办法,特分享一下
在Class类中的
getComponentType
()方法就是解决该问题的方法。该方法描述如下(API):
public
Class
<?>
getComponentType
()返回表示数组组件类型的 Class。如果此类不表示数组类,则此方法返回 null。
返回:
如果此类是数组,则返回表示此类组件类型的 Class
package com.fjl;
/**
* 通过反射直接获取数组类型
* @author fjl
*
*/
class Person{
}
public class ArrayType {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
//定义一组测试数组
char[] x1=new char[3];
char[][] x2=new char[3][3];
int[] a1=new int[5];
int[][] a2=new int[4][5];
String[] s1=new String[2];
String[][] s2=new String[3][4];
Person[] per={new Person()};
//x1数组组件类型
Class<?> y1=x1.getClass().getComponentType();
System.out.println("x1的数组类型为:"+y1.getName());//x1的数组类型为:char
//x2数组组件类型
Class<?> y2=x2.getClass().getComponentType();
System.out.println("" +
"x2的数组类型为:"+
y2.getName());//x2的数组类型为:[C 表示char 在Class类的gatName()方法中可以查看
//a1数组组件类型
Class<?> c1=a1.getClass().getComponentType();
System.out.println("a1的数组类型为:"+c1.getName());//a1的数组类型为:int
//a2数组组件类型
Class<?> c2=a2.getClass().getComponentType();
System.out.println("a2的数组类型为:"+c2.getName());//a2的数组类型为:[I 表示int
//s1数组组件类型
Class<?> c3=s1.getClass().getComponentType();
System.out.println("s1的数组类型为:"+c3.getName());//s1的数组类型为:java.lang.String
//s2数组组件类型
Class<?> c4=s2.getClass().getComponentType();
System.out.println("s2的数组类型为:"+c4.getName());//s2的数组类型为:[Ljava.lang.String;
//per数组组件类型
Class<?> c5=per.getClass().getComponentType();
System.out.println("per的数组类型为:"+c5.getName());//per的数组类型为:com.fjl.Person
}
}
复制代码
作者:
余尚勇
时间:
2013-5-13 01:11
感谢楼主分享,学习了
作者:
陈龙
时间:
2013-5-13 18:36
这个得到的结果,应该是数组元素类型。char[] x1得到的结果是char,char是数组元素类型;char[][] x2得到的结果是[C,也就是char[],而char[][]数组的元素就是char[].
作者:
15574016362
时间:
2013-5-19 21:56
等会看看
作者:
Changer_s
时间:
2013-5-21 00:06
这个代码怎么搞上去的呀?怎么我们只能把java复制成文本信息再上传上去,楼主求解
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2