黑马程序员技术交流社区

标题: 张孝祥老师:不能通过a直接得到数组元素类型,我说可以! [打印本页]

作者: 寇龙飞    时间: 2012-8-26 16:13
标题: 张孝祥老师:不能通过a直接得到数组元素类型,我说可以!
在张孝祥老师的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。




作者: 全海波    时间: 2012-8-26 16:23
你最终取的还是通过角标拿值呀!




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2