A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

本帖最后由 fjl_fight 于 2013-5-13 01:18 编辑

在很久以前看了张孝祥老师的数组反射视频后,张老师说没有找到什么办法通过反射直接找出数组类型的方法,今天无意间在API中看到了解决办法,特分享一下
在Class类中的getComponentType()方法就是解决该问题的方法。该方法描述如下(API):
public Class<?> getComponentType()返回表示数组组件类型的 Class。如果此类不表示数组类,则此方法返回 null。
返回:如果此类是数组,则返回表示此类组件类型的 Class
  1. package com.fjl;

  2. /**
  3. * 通过反射直接获取数组类型
  4. * @author fjl
  5. *
  6. */
  7. class Person{
  8.         
  9. }
  10. public class ArrayType {

  11.         /**
  12.          * @param args
  13.          */
  14.         public static void main(String[] args) {
  15.                 // TODO Auto-generated method stub

  16.                 //定义一组测试数组
  17.                 char[] x1=new char[3];
  18.                 char[][] x2=new char[3][3];
  19.                 int[] a1=new int[5];
  20.                 int[][] a2=new int[4][5];
  21.                 String[] s1=new String[2];
  22.                 String[][] s2=new String[3][4];
  23.                 Person[] per={new Person()};
  24.                
  25.                 //x1数组组件类型
  26.                 Class<?> y1=x1.getClass().getComponentType();
  27.                 System.out.println("x1的数组类型为:"+y1.getName());//x1的数组类型为:char
  28.                 //x2数组组件类型
  29.                 Class<?> y2=x2.getClass().getComponentType();
  30.                 System.out.println("" +
  31.                                 "x2的数组类型为:"+
  32.                                 y2.getName());//x2的数组类型为:[C 表示char 在Class类的gatName()方法中可以查看
  33.                 //a1数组组件类型
  34.                 Class<?> c1=a1.getClass().getComponentType();
  35.                 System.out.println("a1的数组类型为:"+c1.getName());//a1的数组类型为:int
  36.                 //a2数组组件类型
  37.                 Class<?> c2=a2.getClass().getComponentType();
  38.                 System.out.println("a2的数组类型为:"+c2.getName());//a2的数组类型为:[I 表示int
  39.                 //s1数组组件类型
  40.                 Class<?> c3=s1.getClass().getComponentType();
  41.                 System.out.println("s1的数组类型为:"+c3.getName());//s1的数组类型为:java.lang.String
  42.                 //s2数组组件类型
  43.                 Class<?> c4=s2.getClass().getComponentType();
  44.                 System.out.println("s2的数组类型为:"+c4.getName());//s2的数组类型为:[Ljava.lang.String;
  45.                 //per数组组件类型
  46.                 Class<?> c5=per.getClass().getComponentType();
  47.                 System.out.println("per的数组类型为:"+c5.getName());//per的数组类型为:com.fjl.Person
  48.         }

  49. }
复制代码

评分

参与人数 1技术分 +1 收起 理由
曹睿翔 + 1 赞一个!

查看全部评分

4 个回复

倒序浏览
感谢楼主分享,学习了
回复 使用道具 举报
这个得到的结果,应该是数组元素类型。char[] x1得到的结果是char,char是数组元素类型;char[][] x2得到的结果是[C,也就是char[],而char[][]数组的元素就是char[].
回复 使用道具 举报
等会看看
回复 使用道具 举报
这个代码怎么搞上去的呀?怎么我们只能把java复制成文本信息再上传上去,楼主求解
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马