在张孝祥老师的Java基础加强视频中,有段内容说,不能通过a直接得到数组中的元素类型,但是我觉得可以啊。- int[] a = new int[]{1, 2, 3};
复制代码 大家看看我的方法对不?- package com.itheima.zhangxiaoxiang;
-
- public class ArrayType {
-
- public static void main(String[] args) {
-
- int[] obj1 = new int[]{1, 3, 8};
- String[] obj2 = new String[]{"oh yeah !", "Congratulations!"};
- Something obj3 = new Something();
- Object[] obj4 = new Object[]{"Hello", 12.7, 13f, 5, obj3};
-
- printObjType(obj1);
- printObjType(obj2);
- printObjType(obj3);
- printObjType(obj4);
- System.out.println( void.class.getName() );
-
- }
-
- public static void printObjType(Object obj) {
- System.out.println( obj.getClass().getName() );
- }
- }
-
- class Something {}//空类
复制代码 打印结果是:
然后通过比对jdk文档中Class的getName()方法,就可以得出对应的数组类型,
也就是说通过反射未知类型数组变量名就可以直接判断出数组的类型(这个
比对判断过程也可以用Java来实现,直接打印判断出的数组类型)。
对吗?面对张老师的权威,我比较疑惑。
其中对于数组Object[] obj4 = new Object[]{"Hello", 12.7, 13f, 5, obj3};,这个数组中元素是由String、Double、Float、Integer与Something(自定义类)组成的,那么这个数组的类型必然是其内部所有元素的最大基类,即Object。
|