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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

在张孝祥老师的Java基础加强视频中,有段内容说,不能通过a直接得到数组中的元素类型,但是我觉得可以啊。
  1. int[] a = new int[]{1, 2, 3};
复制代码
大家看看我的方法对不?
  1. package com.itheima.zhangxiaoxiang;  
  2.   
  3. public class ArrayType {  
  4.   
  5.     public static void main(String[] args) {  
  6.          
  7.         int[] obj1 = new int[]{1, 3, 8};  
  8.         String[] obj2 = new String[]{"oh yeah !", "Congratulations!"};  
  9.         Something obj3 = new Something();  
  10.         Object[] obj4 = new Object[]{"Hello", 12.7, 13f, 5, obj3};  
  11.          
  12.         printObjType(obj1);  
  13.         printObjType(obj2);  
  14.         printObjType(obj3);  
  15.         printObjType(obj4);  
  16.         System.out.println( void.class.getName() );  
  17.          
  18.     }  
  19.       
  20.     public static void printObjType(Object obj) {  
  21.         System.out.println( obj.getClass().getName() );  
  22.     }  
  23. }  
  24.   
  25. class Something {}//空类
复制代码
打印结果是:

然后通过比对jdk文档中Class的getName()方法,就可以得出对应的数组类型,


也就是说通过反射未知类型数组变量名就可以直接判断出数组的类型(这个
比对判断过程也可以用Java来实现,直接打印判断出的数组类型)。
对吗?面对张老师的权威,我比较疑惑。

其中对于数组Object[] obj4 = new Object[]{"Hello", 12.7, 13f, 5, obj3};,这个数组中元素是由String、Double、Float、Integer与Something(自定义类)组成的,那么这个数组的类型必然是其内部所有元素的最大基类,即Object。



评分

参与人数 1技术分 +1 收起 理由
张_涛 + 1 赞一个!

查看全部评分

1 个回复

倒序浏览

回帖奖励 +10

你最终取的还是通过角标拿值呀!

点评

where  发表于 2012-8-26 16:39
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马