黑马程序员--java反射(补)

----------android培训java培训、java学习型技术博客、期待与您交流! ----------

 

补充数组和反射的结合,先来看一下数组和Object的关系:

 1 public class ArrayTest
 2 {
 3     public static void main(String[] args)
 4     {
 5 
 6         int[] a1 = new int[3];
 7         int[] a2 = new int[4];
 8         int[][] a3 = new int[2][3];
 9         String[] a4 = new String[3];
10         // Class对象只有一个可以不必用equals方法
11         System.out.println(a1.getClass() == a2.getClass());
12         // System.out.println(a1.getClass() == a4.getClass());//报错
13         // System.out.println(a1.getClass() == a3.getClass());//报错
14         System.out.println(a1.getClass().getName());
15         System.out.println(a2.getClass().getName());
16         System.out.println(a3.getClass().getName());
17         System.out.println(a1.getClass().getSuperclass().getName());
18         System.out.println(a3.getClass().getSuperclass().getName());
19         System.out.println("\n" +"--------------------------------");
20         Object aObj1 = a1;
21         Object aObj2 = a4;
22         for(int i = 0; i < ((String[])aObj2).length; i++)
23         {
24             System.out.print(((String[])aObj2)[i] + " ");
25         }//遍历
26         //Object[] aObj3 = a1;//报错,原因int[]类型是object类型,
27         //所以Object aObj1 = a1;正确,而int类型不是object类型
28         System.out.println("\n" + int.class.getName());
29         //System.out.println(int.class.getSuperclass().getName());//抛异常
30         Object[] aObj4 = a4;//正确因为String是object类型的
31         for(int i = 0; i < aObj4.length; i++)
32         {
33             System.out.print((String)aObj4[i] + "  ");
34         }
35         //Object[][] aObj5 = a3;//报错,原因同上,int不是Object类型
36         System.out.println("\n" +"--------------------------------");
37         Object aObj6 = a3;
38         
39         for(int i = 0; i < ((int[][])aObj6).length; i++ )
40         {
41             System.out.println();
42             for(int j = 0; j < ((int[][])aObj6)[i].length; j++)
43             {
44                 System.out.print(((int[][])aObj6)[i][j] + " ");
45             }
46         }
47         System.out.println("\n" +"----------------------------");
48         
49         Object[] aObj7 = a3;//正确,因为int[]类型的是Object类型
50         //aObj7长度为2,aObj7[i]都是一个长度为3的一位数组
51         System.out.println("\n" + aObj7.length);
52         for(int i = 0; i < aObj7.length; i++ )
53         {
54             for(int j = 0; j < ((int[])aObj7[i]).length; j++)
55             {
56                 System.out.print(((int[])aObj7[i])[j] + " ");
57             }
58             System.out.println();
59         }
60         
61     }
62 }


 

这个例子说明了基本数据类型的一维数组和二维数组和Object的关系,以前可能不太注意,在这里详细说明一下:int[]是Object类型的,int不是Object类型的,String是Object类型的,String[]也是Object类型的

数组的反射:

 1 public class ArrayTest1
 2 {
 3     public static void main(String[] args)
 4     {
 5         Class clazz = int.class;
 6         int[] a = new int[]{2,3};
 7         //创建一个二维的数组,利用反射
 8         Object obj1 = Array.newInstance(clazz, a);
 9         int[][] b = (int[][]) obj1;//把它转化成真实的类型
10 
11         System.out.println(obj1.getClass().getName());
12         //输出数组的第一维的长度
13         System.out.println(Array.getLength(obj1));
14         System.out.println(Array.get(((int [][])obj1)[0], 0));
15         int[] a1 = new int[4];
16         System.out.println(a1.getClass().getName());
17 
18     }
19 }


 

利用反射创建数组,用的是Array中的静态方法Array.newInstance(clazz, a);第一个参数为Class对象,第二个是一个数组int类型的,指出数组的每维的长度;

在结合Array类中的静态方法,访问数组的元素

 

 

----------android培训java培训、java学习型技术博客、期待与您交流! ----------

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
前台: (1)注册登录模块:按照学校的相关规定进行注册和登录。 (2)招聘信息查看:高校毕业生们可以网站首页上查看所有的招聘信息,除此之外还可以输入公司名称或岗位名称进行搜索。 (3)用人单位模块:此模块为宣传用人单位的主要功能模块,具体包括用人单位简介、岗位需求及职责及公司介绍等功能。 (4)就业指导:学生朋友们在就业前可以通过此模块获取指导。 (5)新闻信息:为了让用户们可以了解到最新的新闻动态,本系统可以通过新闻信息查看功能阅读近期的新闻动态。 (6)在线论坛:毕业季的同学们可以通过此模块相互交流。 后台: (1)系统用户管理模块:可以查看系统内的管理员信息并进行维护。 (2)学生管理模块:通过此功能可以添加学生用户,还可以对学生信息进行修改和删除。 (3)用人单位管理模块:管理员用户通过此模块可以管理用人单位的信息,还可以对用人单位信息进行查看和维护。 (4)招聘管理模块:管理员通过此功能发布和维护系统内的照片信息。 (5)就业指导管理模块:通过此模块可以编辑和发布就业指导信息,从而更好的帮助就业季的同学们。 (6)论坛管理:通过论坛管理可以查看论坛的主题帖及里面的回复信息,除此之外还可以对论坛的信息进行维护和管理。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值